<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
<title>VIM 中文帮助: 使用不同终端和鼠标</title>
<link rel="stylesheet" href="vim-stylesheet.css" type="text/css" />
<link rel="canonical" href="https://yianwillis.github.io/vimcdoc/doc/term.html" />
<script type="text/javascript" src="vimcdoc.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<nav id=banner>
<form action=tags.html target="tag_iframe">
  <input type="text" name="tag" id="tag" placeholder="标签搜索">
</form>
<iframe name="tag_iframe" src=""></iframe>
<a href="help.html">帮助总览</a> &middot;
<hr/>
<a href="quickref.html">快速参考</a> &middot;
<a href="index.html">命令索引</a> &middot;
<a href="eval.html#functions">函数列表</a> &middot;
<a href="quickref.html#option-list">选项列表</a> &middot;
<hr/>
<a href="usr_toc.html">用户手册</a> &middot;
<a href="help.html#reference_toc">参考手册</a> &middot;
</nav>

<header>
<h2>term</h2>
</header>
<article id=outer>
<section class=inner>
<b class="vimtag"> <a name="term.txt">term.txt</a> </b>      适用于 Vim 9.0 版本。   最近更新: 2023年2月


                  <code class="vim">VIM 参考手册    by Bram Moolenaar</code>
                                <code class="vim">译者</code>: Willis、tocer


终端信息                                                <b class="vimtag"> <a name="terminal-info">terminal-info</a> </b>

Vim 使用你使用的终端的信息来填充屏幕和识别你输入的键。如果信息不正确，屏幕可能
会混乱，而一些键也可能识别不了。屏幕上必须执行的动作是通过输出字符串完成的。特
殊键会产生一系列字符的序列。这些字符串存在终端选项里，见  <a href="term.html#terminal-options">terminal-options</a> 。

<code class="note">注意</code>: 运行  <a href="gui.html#GUI">GUI</a>  的时候这里多数都用不到。

1. 启动                          <a href="term.html#startup-terminal">startup-terminal</a> 
2. 终端选项                      <a href="term.html#terminal-options">terminal-options</a> 
3. 窗口大小                      <a href="term.html#window-size">window-size</a> 
4. 慢速和快速终端                <a href="term.html#slow-fast-terminal">slow-fast-terminal</a> 
5. 使用鼠标                      <a href="term.html#mouse-using">mouse-using</a> 

</section><hr class="doubleline" /><section class=inner>
<h4>1. 启动                                                 <b class="vimtag"> <a name="startup-terminal">startup-terminal</a> </b></h4>
Vim 启动时，假定一个缺省终端类型。Amiga 上，这是一个标准的 CLI 窗口，
MS-Windows 是 pc 终端，而 Unix 则是 ansi 终端。还有一些终端类型，它们都总是可
用的，见下  <a href="term.html#builtin-terms">builtin-terms</a> 。

使用 '-T' Vim 参数，你可以给出终端名。如果没有给出，Vim 会试图从 TERM 环境变量
里读取名字。

                                <b class="vimtag"> <a name="termcap">termcap</a> </b> <b class="vimtag"> <a name="terminfo">terminfo</a> </b> <b class="vimtag"> <a name="E557">E557</a> </b> <b class="vimtag"> <a name="E558">E558</a> </b> <b class="vimtag"> <a name="E559">E559</a> </b>
Unix 系统使用 terminfo 数据库或者 termcap 文件。在所有的文档里，这被统称为
"termcap"。编译时，configure 的运行会自动决定是用 terminfo 还是 termcap。如果
运行 Vim 时，":version" 的输出显示  <a href="various.html#+terminfo">+terminfo</a>  的话，就意味着使用的是
terminfo。另见  <a href="tips.html#xterm-screens">xterm-screens</a> 。

在非 Unix 系统中，termcap 只有在 Vim 编译时定义 TERMCAP 才有效。

                                        <b class="vimtag"> <a name="builtin-terms">builtin-terms</a> </b> <b class="vimtag"> <a name="builtin_terms">builtin_terms</a> </b>
有若干内建的终端可用。从 9.0.0280 补丁开始，不同 Vim 版本间此支持不再有区别。
用 `:set term=xxx` (在不运行 GUI 的时候)，可以看到可用的内建终端类型列表。另见
 <code class="badlink">+builtin_terms</code> 。

如果包含了 termcap 的代码，Vim 会试图从 termcap 文件和内建的 termcap 里得到你
使用的终端的字符串。如果你使用的终端项目确实存在，两者都会使用。哪个在前面决定
于 <a href="options.html#'ttybuiltin'">'ttybuiltin'</a> 选项的设置:

<a href="options.html#'ttybuiltin'">'ttybuiltin'</a> 打开       1: 内建 termcap         2: 外部 termcap
<a href="options.html#'ttybuiltin'">'ttybuiltin'</a> 关闭       1: 外部 termcap         2: 内建 termcap

如果其中某个选项不存在，就从另外一个那里读取。如果两个都存在，就从排名前面的那
个读取。

使用哪个外部 termcap 文件和不同的系统有关，也可能依赖于环境变量 "TERMCAP" 和
"TERMPATH"。见 "man tgetent"。

依赖于终端的设置                                <b class="vimtag"> <a name="term-dependent-settings">term-dependent-settings</a> </b>

如果你想根据终端名字设置选项或者映射，最好在 .vimrc 里设置。示例: 
<code class="example"></code>
<code class="example">   if &amp;term == "xterm"</code>
<code class="example">     ... xterm 映射和设置 ...</code>
<code class="example">   elseif &amp;term =~ "vt10."</code>
<code class="example">     ... vt100、vt102 映射和设置 ...</code>
<code class="example">   endif</code>

                                                <b class="vimtag"> <a name="raw-terminal-mode">raw-terminal-mode</a> </b>
普通的编辑会把终端设为原始 ("raw") 模式。<a href="term.html#'t_ti'">'t_ti'</a>、<a href="term.html#'t_TI'">'t_TI'</a> 和 <a href="term.html#'t_ks'">'t_ks'</a> 定义的字符串
会送到终端上。正常情况下，这把终端设为一个状态，该状态下能合法给出 termcap 代
码，并激活光标和功能键。
Vim 退出终端时，它会回到 Vim 启动前的模式。<a href="term.html#'t_te'">'t_te'</a>、<a href="term.html#'t_TE'">'t_TE'</a> 和 <a href="term.html#'t_ke'">'t_ke'</a> 定义的字符
串会发送给终端。在 Amiga 上，执行外部命令的命令 (例如 "!!") 会把终端暂时置回普
通模式。这意味着你可以按打印键停止到屏幕的输出。输出在按 <code class="special">&lt;BS&gt;</code> 时继续。

<code class="note">注意</code>: 如果 <a href="term.html#'t_ti'">'t_ti'</a> 非空，Vim 假定它会切换到轮换屏幕上。执行外壳命令或退出 Vim
时产生的结果可能会因此稍有不同。如果不想如此，用 <a href="term.html#'t_TI'">'t_TI'</a> 和 <a href="term.html#'t_TE'">'t_TE'</a> (但要附加而
不是覆盖)。

Vim 会试图用 <a href="term.html#'t_RK'">'t_RK'</a> termcap 项目来检测终端使用的键盘协议。它会在 <a href="term.html#'t_TI'">'t_TI'</a> 之后发
送，但只在没有工作的时候才会做 (没有预输入或等待中的命令)。这是为了防止返回的
响应出现在外壳命令中或 Vim 结束后才到达。

                                                <b class="vimtag"> <a name="xterm-bracketed-paste">xterm-bracketed-paste</a> </b>
如果设置了 <a href="term.html#'t_BE'">'t_BE'</a> 选项，进入 "raw" 模式时会发送 <a href="term.html#'t_BE'">'t_BE'</a> 到终端，退出 "raw" 模式
时则发送 <a href="term.html#'t_BD'">'t_BD'</a>。终端应在粘贴文本之前发送 <a href="term.html#'t_PS'">'t_PS'</a>，而粘贴文本之后发送 <a href="term.html#'t_PE'">'t_PE'</a>。
这样 Vim 就能区隔粘贴的文本和键入的字符。粘贴文本的处理就像使用了鼠标中键，按
本义插入而不作命令解释。

光标在首列时，在光标前插入粘贴文本。否则在光标位置之后附加粘贴文本。这意味着你
不能在首列之后粘贴。不幸的是 Vim 没有办法知道鼠标指针在哪里。

<code class="note">注意</code> 有些情况下 Vim 不能识别这种括号内的粘贴，而只能得到原始的文本。在其它一些
情况下，Vim 只能得到首个粘贴的字符而丢失其余的部分，例如在使用 "r" 命令时。如
果你对此不满意，在 .vimrc 这样关闭带括号的粘贴: 
<code class="example">        set t_BE=</code>
如果这样做，Vim 运行时发送 <a href="term.html#'t_BD'">'t_BD'</a> 给终端以关闭括号内的粘贴。

如果不设置  <a href="term.html#t_PS">t_PS</a>  或  <a href="term.html#t_PE">t_PE</a> ，不使用  <a href="term.html#t_BE">t_BE</a> 。围绕粘贴文字的转义码如果不能识别，
这样可以确保括号内的粘贴不打开。

如果你的终端支持括号内的粘贴但没有自动设置相关选项，可以试试下面: 
<code class="example"></code>
<code class="example">        if &amp;term =~ "screen"</code>
<code class="example">          let &amp;t_BE = "\e[?2004h"</code>
<code class="example">          let &amp;t_BD = "\e[?2004l"</code>
<code class="example">          exec "set t_PS=\e[200~"</code>
<code class="example">          exec "set t_PE=\e[201~"</code>
<code class="example">        endif</code>
<code class="example"></code>
ncurses 2023年初的 6.4 版本为某些终端新增了 terminfo 项目 "BE"、"BD"、"PS"
和 "PE"。如果有此版本，你的终端可能不需要手动配置。

                                                        <b class="vimtag"> <a name="tmux-integration">tmux-integration</a> </b>
在 tmux 里执行 Vim 时如果有问题，下面有一些提示。可以注释掉对你不适用的部分
(取决于 tmux 运行所在的终端): 
<code class="example"></code>
<code class="example">    if !has('gui_running') &amp;&amp; &amp;term =~ '^\%(screen\|tmux\)'</code>
<code class="example">        " 更好鼠标支持，见 :help 'ttymouse'</code>
<code class="example">        set ttymouse=sgr</code>
<code class="example"></code>
<code class="example">        " 打开真彩，见 :help xterm-true-color</code>
<code class="example">        let &amp;termguicolors = v:true</code>
<code class="example">        let &amp;t_8f = "\&lt;Esc&gt;[38;2;%lu;%lu;%lum"</code>
<code class="example">        let &amp;t_8b = "\&lt;Esc&gt;[48;2;%lu;%lu;%lum"</code>
<code class="example"></code>
<code class="example">        " 打开括号内的粘贴模式，见 :help xterm-bracketed-paste</code>
<code class="example">        let &amp;t_BE = "\&lt;Esc&gt;[?2004h"</code>
<code class="example">        let &amp;t_BD = "\&lt;Esc&gt;[?2004l"</code>
<code class="example">        let &amp;t_PS = "\&lt;Esc&gt;[200~"</code>
<code class="example">        let &amp;t_PE = "\&lt;Esc&gt;[201~"</code>
<code class="example"></code>
<code class="example">        " 打开焦点事件跟踪，见 :help xterm-focus-event</code>
<code class="example">        let &amp;t_fe = "\&lt;Esc&gt;[?1004h"</code>
<code class="example">        let &amp;t_fd = "\&lt;Esc&gt;[?1004l"</code>
<code class="example">        execute "set &lt;FocusGained&gt;=\&lt;Esc&gt;[I"</code>
<code class="example">        execute "set &lt;FocusLost&gt;=\&lt;Esc&gt;[O"</code>
<code class="example"></code>
<code class="example">        " 打开带修饰符的光标键，见 :help arrow_modifiers</code>
<code class="example">        execute "silent! set &lt;xUp&gt;=\&lt;Esc&gt;[@;*A"</code>
<code class="example">        execute "silent! set &lt;xDown&gt;=\&lt;Esc&gt;[@;*B"</code>
<code class="example">        execute "silent! set &lt;xRight&gt;=\&lt;Esc&gt;[@;*C"</code>
<code class="example">        execute "silent! set &lt;xLeft&gt;=\&lt;Esc&gt;[@;*D"</code>
<code class="example">    endif</code>

                                                        <b class="vimtag"> <a name="cs7-problem">cs7-problem</a> </b>
<code class="note">注意</code>: 如果终端设置在运行 Vim 以后改变，你可能会碰到不合法的设置组合。有报告说
Solaris 2.5 上 "stty cs8 parenb"，使用 "stty cs7 parenb" 恢复就会有这个问题。
如果你使用 "stty cs8 -parenb -istrip"，就能正确恢复了。

有些 termcap 项目在某种意义上是错误的，因为发送 <a href="term.html#'t_ks'">'t_ks'</a> 后光标键发送的代码和
termcap 定义的不同。要避免这一点，你需要设置 <a href="term.html#'t_ks'">'t_ks'</a> (和 <a href="term.html#'t_ke'">'t_ke'</a>) 为空值。这必须
在初始化时进行 (见  <a href="starting.html#initialization">initialization</a> )，不然就太晚了。

有些终端项目假设最高位总是被复位的。例如: Amiga 上光标向上项目可以是
":ku=\E[A:"。但是 Amiga 实际发送 "\233A"。如果最高位被复位，这没有问题，比如在
串行线使用 Amiga 的时候。如果光标键不工作，尝试一下项目 ":ku=\233A:"。

有些 termcap 项目使用 ":ku=\E[A:"。但 Amiga 实际发送 "\233A"。输出结果 "\E["
和 "\233" 经常是等价的，但输入时则不然。要修正这一问题，你需要修改 termcap 项
目，或者用 :set 命令改变键码 (<code class="vim">译者注</code>: 这段内容有重复，但原文如此)。

许多光标键以单个 <code class="special">&lt;Esc&gt;</code> 开始。Vim 必须找出是否这确实是 <code class="special">&lt;Esc&gt;</code> 键单击，还是光标键
序列的开始。它等待下一个字符到达。如果一秒钟不出现，就假设是单个 <code class="special">&lt;Esc&gt;</code>。在很慢
的系统里，这可能失败，使得有时候光标键不能工作。如果你发现这一问题，复位
<a href="options.html#'timeout'">'timeout'</a> 选项。Vim 会在 <code class="special">&lt;Esc&gt;</code> 之后等待下一个字符的来临。如果你需要输入单个
<code class="special">&lt;Esc&gt;</code>，必须输入两次。复位 <a href="options.html#'esckeys'">'esckeys'</a> 选项在插入模式下避免这个问题，但是这样你不
能在插入模式下使用光标和功能键。

Amiga 上窗口调整大小的识别只有在终端名为 "amiga" 或 "builtin_amiga" 才有可能。

有些终端的光标键的代码不明确。televideo 925 就是这样的一个终端。光标左键发送的
是 <code class="keystroke">CTRL-H</code>。这使得退格和光标左键无法区别。要避免这一问题，<code class="keystroke">CTRL-H</code> 永远不会识别为
光标左键。

                                        <b class="vimtag"> <a name="vt100-cursor-keys">vt100-cursor-keys</a> </b> <b class="vimtag"> <a name="xterm-cursor-keys">xterm-cursor-keys</a> </b>
其它终端 (例如，vt100 和 xterm) 的光标键发送 <code class="special">&lt;Esc&gt;</code>OA、<code class="special">&lt;Esc&gt;</code>OB，等等。不幸的
是，这些是插入模式下合法的命令: 结束插入，在上面打开新行，开始插入 'A'、'B'，
等等。Vim 不会执行这些命令，相反，它会把该输入键序列识别为光标键的移动。要避免
这一点而使 Vim 在两种情况下都能工作，你需要以下设置: 
<code class="example">        :set notimeout          " 映射时不检查超时</code>
<code class="example">        :set ttimeout           " 终端键码检查超时</code>
<code class="example">        :set timeoutlen=100     " 超时为 100 毫秒</code>
这要求键码在 100 毫秒的间隔内发送，从而能识别其为光标键。正常情况下，你的输入
不会那么快，所以它们能被识别为单独输入的命令，即使 Vim 收到了相同的字节序列。

                                <b class="vimtag"> <a name="vt100-function-keys">vt100-function-keys</a> </b> <b class="vimtag"> <a name="xterm-function-keys">xterm-function-keys</a> </b>
xterm 可以用两种模式发送功能键 F1 到 F4: vt100 兼容模式或不兼容模式。因为 Vim
可能不知道 xterm 发送的是哪种，两种都被识别。<code class="special">&lt;Home&gt;</code> 和 <code class="special">&lt;End&gt;</code> 键情况相同。
<code class="section">                        普通                    vt100 </code>
        <code class="special">&lt;F1&gt;</code>    t_k1    <code class="special">&lt;Esc&gt;</code>[11~       <code class="special">&lt;xF1&gt;</code>   <code class="special">&lt;Esc&gt;</code>OP     <b class="vimtag"> <a name="%3CxF1%3E-xterm">&lt;xF1&gt;-xterm</a> </b>
        <code class="special">&lt;F2&gt;</code>    t_k2    <code class="special">&lt;Esc&gt;</code>[12~       <code class="special">&lt;xF2&gt;</code>   <code class="special">&lt;Esc&gt;</code>OQ     <b class="vimtag"> <a name="%3CxF2%3E-xterm">&lt;xF2&gt;-xterm</a> </b>
        <code class="special">&lt;F3&gt;</code>    t_k3    <code class="special">&lt;Esc&gt;</code>[13~       <code class="special">&lt;xF3&gt;</code>   <code class="special">&lt;Esc&gt;</code>OR     <b class="vimtag"> <a name="%3CxF3%3E-xterm">&lt;xF3&gt;-xterm</a> </b>
        <code class="special">&lt;F4&gt;</code>    t_k4    <code class="special">&lt;Esc&gt;</code>[14~       <code class="special">&lt;xF4&gt;</code>   <code class="special">&lt;Esc&gt;</code>OS     <b class="vimtag"> <a name="%3CxF4%3E-xterm">&lt;xF4&gt;-xterm</a> </b>
        <code class="special">&lt;Home&gt;</code>  t_kh    <code class="special">&lt;Esc&gt;</code>[7~        <code class="special">&lt;xHome&gt;</code> <code class="special">&lt;Esc&gt;</code>OH     <b class="vimtag"> <a name="%3CxHome%3E-xterm">&lt;xHome&gt;-xterm</a> </b>
        <code class="special">&lt;End&gt;</code>   t_@7    <code class="special">&lt;Esc&gt;</code>[4~        <code class="special">&lt;xEnd&gt;</code>  <code class="special">&lt;Esc&gt;</code>OF     <b class="vimtag"> <a name="%3CxEnd%3E-xterm">&lt;xEnd&gt;-xterm</a> </b>

Vim 启动时，<code class="special">&lt;xF1&gt;</code> 被映射到 <code class="special">&lt;F1&gt;</code>，<code class="special">&lt;xF2&gt;</code> 到 <code class="special">&lt;F2&gt;</code> 等等。这意味着缺省两种代码做相
同的事情。如果你为 <code class="special">&lt;xF2&gt;</code> 定义了映射而你的终端支持两种键，那么就覆盖了缺省的映
射，从而可以用 <code class="special">&lt;F2&gt;</code> 和 <code class="special">&lt;xF2&gt;</code> 键做不同的事情。

                                                        <b class="vimtag"> <a name="xterm-shifted-keys">xterm-shifted-keys</a> </b>
更新的 xterm 版本支持 Shift + 功能键和特殊键。Vim 识别其中的大多数。使用 ":set
termcap" 来检查哪些是支持的，相应的代码为何。多数情况下这些不在 termcap 里，只
有 builtin_xterm termcap 才支持。

                                                        <b class="vimtag"> <a name="xterm-modifier-keys">xterm-modifier-keys</a> </b>
新版 xterm 对于大多数功能键支持 Alt 和 Ctrl。为避免增加 Alt、Ctrl 和 Shift 对
每个键的捆绑，在 termcap 项目末尾识别一个特殊序列: ";*X"。"X" 可以是任何字符，
通常是 '~'。";*" 支持一个可选的修饰符参数。";2" 代表 Shift，";3" 是 Alt，";5"
是 Ctrl，";9" 是 Meta (当它与 Alt 不同时)。它们可以组合使用。例如: 
<code class="example">        :set &lt;F8&gt;=^[[19;*~</code>
<code class="example">        :set &lt;Home&gt;=^[[1;*H</code>
关于这些代码的另一个特性是它们不能被另外的代码覆盖。这就避免了被来自 xterm
 <a href="term.html#t_RV">t_RV</a>  所包含的代码直接覆盖掉。

另一个特殊值是以 "@;*X" 结尾的 termcap 项目。这用于光标键，那里可用 "CSI X" 或
"CSI 1 ; 修饰符 X"。所以 "@" 代表或者后面有跟修饰符的 "1"，或者为空。
                                                        <b class="vimtag"> <a name="arrow_modifiers">arrow_modifiers</a> </b>
若干终端模拟器 (alacritty、gnome、konsole 等等) 为带修饰符的键发送特殊代码，但
这些键在 termcap/terminfo 数据库里没有对应项目。可在 vimrc 里添加若干行使其工
作。例如，要在 gnome terminal 里支持带 Control 修饰符的光标键: 
<code class="example">        if &amp;term =~ 'gnome'</code>
<code class="example">           execute "set &lt;xUp&gt;=\&lt;Esc&gt;[@;*A"</code>
<code class="example">           execute "set &lt;xDown&gt;=\&lt;Esc&gt;[@;*B"</code>
<code class="example">           execute "set &lt;xRight&gt;=\&lt;Esc&gt;[@;*C"</code>
<code class="example">           execute "set &lt;xLeft&gt;=\&lt;Esc&gt;[@;*D"</code>
<code class="example">        endif</code>
                                                        <b class="vimtag"> <a name="xterm-scroll-region">xterm-scroll-region</a> </b>
Sun 和其它的平台上的 xterm 缺省的 termcap 项目不包含区域滚动的项目。在
/etc/termpcap 的 xterm 项目里增加 ":cs=\E[%i%d;%dr:"，那么一切都没有问题了。

                                                        <b class="vimtag"> <a name="xterm-end-home-keys">xterm-end-home-keys</a> </b>
在一些系统上 (至少使用 XFree86 3.1.2 的 FreeBSD)，<code class="special">&lt;End&gt;</code> 和 <code class="special">&lt;Home&gt;</code> 键的代码里包
含 <code class="special">&lt;Nul&gt;</code> 字符。要使得这些键发送正确的键码，在你的 ~/.Xdefaults 文件里增加:

*VT100.Translations:            #override \n\
                <code class="special">&lt;Key&gt;</code>Home: string("0x1b") string("[7~") \n\
                <code class="special">&lt;Key&gt;</code>End: string("0x1b") string("[8~")

                                                <b class="vimtag"> <a name="xterm-8bit">xterm-8bit</a> </b> <b class="vimtag"> <a name="xterm-8-bit">xterm-8-bit</a> </b>
Xterm 可以在使用 8 位转义序列的模式里运行。这里，CSI 代码代替了 <code class="special">&lt;Esc&gt;</code>[。它的优
点是，<code class="special">&lt;Esc&gt;</code> 键可以在插入模式下更快的识别，因为不会和特殊键的开始相混淆。
对于内建的 termcap 项目而言，Vim 检查 <a href="options.html#'term'">'term'</a> 选项是否包含 "8bit"。如果是，就在
termcap 项目、鼠标和一些其它的项目中使用 8 位字符，通常，你在外壳里设置 $TERM
为 "xterm-8bit"。Vim 会发现这一点，并自动调整 8 位设置。
如果 Vim 接收到对  <a href="term.html#t_RV">t_RV</a>  序列的应答 (请求版本) 并且它以 CSI 开始，就假设终端处
于 8 位模式，并把所有的健序列转换为它们的 8 位版本。

                                                <b class="vimtag"> <a name="xterm-terminfo-entries">xterm-terminfo-entries</a> </b>
一段时间里，terminfo 项目不足于描述 Vim 使用的所有功能。而内建的 xterm 则有所
有需要的 termcap 项目，因此，若干和 xterm 足够相似的终端利用了这一点，在 $TERM
终端名里附加 "xterm-" 前缀。

这会引发问题，因为这些终端常常并非 100% 与 xterm 兼容。2023 年初，terminfo 数
据库新增了若干项目，这样不需要 "xterm" 变通方法就可以使用这些功能。以下是相关
项目 (至今为止):

<code class="section">        名字    xterm 值        描述 </code>
        RV      "\033[&gt;c"       请求版本  <a href="term.html#t_RV">t_RV</a> 

        BE      "\033[?2004h"   打开括号内粘贴模式  <a href="term.html#t_BE">t_BE</a> 
        BD      "\033[?2004l"   关闭括号内粘贴模式  <a href="term.html#t_BD">t_BD</a> 
        PS      "\033[200~"     粘贴文本开始  <a href="term.html#t_PS">t_PS</a> 
        PE      "\033[201~"     粘贴文本结束  <a href="term.html#t_PE">t_PE</a> 

        XM      "\033[?1006;1004;1000%?%p1%<code class="special">{1}</code>%=%th%el%;"
                                鼠标打开 / 关闭  <a href="term.html#t_XM">t_XM</a> 

"XM" 项目包含了 "1006" 以打开 SGR 风格鼠标报告，支持多于 223 的列数。也包含了
"1004"，打开焦点报告。t_fe 和 t_fd 项目可留空 (在 terminfo/termcap 里也没有对
应的项目)。

                                                <b class="vimtag"> <a name="xterm-kitty">xterm-kitty</a> </b> <b class="vimtag"> <a name="kitty-terminal">kitty-terminal</a> </b>
Kitty 终端是特例。主要因为是它和绝大多数其它终端不同，也因为它并不试图缺省让自
己更像其它终端，而是规定了在 Kitty 里应用要如何工作。这使得 Vim 在 Kitty 终端
里很难工作。有些特例需要特别代码，但为某个特定终端开特例并非理想。

其中一个问题是 $TERM 的值设为 "xterm-kitty"。对 Vim 而言，这意味此终端和 xterm
兼容，可使用内建的 xterm termcap 项目。许多其它终端依赖这一点。但 Kitty 并不完
全兼容 xterm。作者建议忽略 "xterm-" 前缀并使用对应的在 terminfo 项目。现在就是
如此，不使用内建的 xterm termcap 项目。但仍设置了 t_RV，不然很多功能不可用，一
个例子是自动设置 <a href="options.html#'ttymouse'">'ttymouse'</a> 为 "sgr" (直到为此可用  <a href="term.html#t_XM">t_XM</a>  为止)。

不清楚为什么 kitty 设置 $TERM 为 "xterm-kitty"，此终端并不真得和 xterm 兼容。
"kitty" 更合适，但该名字的 terminfo 项目并不广泛被接受。

<code class="note">注意</code> kitty 键盘协议是另一个功能，作  <a href="map.html#kitty-keyboard-protocol">kitty-keyboard-protocol</a> 。


</section><hr class="doubleline" /><section class=inner>
<h4>2. 终端选项                     <b class="vimtag"> <a name="terminal-options">terminal-options</a> </b> <b class="vimtag"> <a name="termcap-options">termcap-options</a> </b> <b class="vimtag"> <a name="E436">E436</a> </b></h4>
终端选项可以和普通选项一样设置。但不会在 ":set all" 命令里显示。相反，应该用
":set termcap"。

通过设置合适的选项，你总是可以调整个别字符串的值。例如: 
<code class="example">        :set t_ce=^V^[[K        (CTRL-V，&lt;Esc&gt;，[，K)</code>
<code class="example"></code>
这些选项列在下面。相关的 termcap 代码总是等价于选项名字的最后两个字符。只有一
个 termcap 代码是必须的: 光标移动，<a href="term.html#'t_cm'">'t_cm'</a>。

选项 <a href="term.html#'t_da'">'t_da'</a>、<a href="term.html#'t_db'">'t_db'</a>、<a href="term.html#'t_ms'">'t_ms'</a>、<a href="term.html#'t_xs'">'t_xs'</a>、<a href="term.html#'t_xn'">'t_xn'</a> 代表 termcap 里的标志位。termcap
标志位存在时，选项总是设为 "y"。但是任何非空的字符串意味着标志位已经置位。而空
字符串代表该标志位没有置位。<a href="term.html#'t_CS'">'t_CS'</a> 也是这样的，虽然它不是 termcap 的标志位。

输 出 代 码                                             <b class="vimtag"> <a name="terminal-output-codes">terminal-output-codes</a> </b>
<code class="section">        选项    含义    </code>

        t_AB    设置背景色 (ANSI)                               <b class="vimtag"> <a name="t_AB">t_AB</a> </b> <b class="vimtag"> <a name="'t_AB'">'t_AB'</a> </b>
        t_AF    设置前景色 (ANSI)                               <b class="vimtag"> <a name="t_AF">t_AF</a> </b> <b class="vimtag"> <a name="'t_AF'">'t_AF'</a> </b>
        t_AL    增加若干空行                                    <b class="vimtag"> <a name="t_AL">t_AL</a> </b> <b class="vimtag"> <a name="'t_AL'">'t_AL'</a> </b>
        t_al    增加一行空行                                    <b class="vimtag"> <a name="t_al">t_al</a> </b> <b class="vimtag"> <a name="'t_al'">'t_al'</a> </b>
        t_bc    退格字符                                        <b class="vimtag"> <a name="t_bc">t_bc</a> </b> <b class="vimtag"> <a name="'t_bc'">'t_bc'</a> </b>
        t_cd    清除到屏幕尾                                    <b class="vimtag"> <a name="t_cd">t_cd</a> </b> <b class="vimtag"> <a name="'t_cd'">'t_cd'</a> </b>
        t_ce    清除到行尾                                      <b class="vimtag"> <a name="t_ce">t_ce</a> </b> <b class="vimtag"> <a name="'t_ce'">'t_ce'</a> </b>
        t_cl    清除屏幕                                        <b class="vimtag"> <a name="t_cl">t_cl</a> </b> <b class="vimtag"> <a name="'t_cl'">'t_cl'</a> </b>
        t_cm    光标移动 (必需！)                         <b class="vimtag"> <a name="E437">E437</a> </b> <b class="vimtag"> <a name="t_cm">t_cm</a> </b> <b class="vimtag"> <a name="'t_cm'">'t_cm'</a> </b>
        t_Co    颜色数目                                        <b class="vimtag"> <a name="t_Co">t_Co</a> </b> <b class="vimtag"> <a name="'t_Co'">'t_Co'</a> </b>
        t_CS    如果非空，光标相对于滚动区域                    <b class="vimtag"> <a name="t_CS">t_CS</a> </b> <b class="vimtag"> <a name="'t_CS'">'t_CS'</a> </b>
        t_cs    定义滚动区域                                    <b class="vimtag"> <a name="t_cs">t_cs</a> </b> <b class="vimtag"> <a name="'t_cs'">'t_cs'</a> </b>
        t_CV    定义垂直滚动区域                                <b class="vimtag"> <a name="t_CV">t_CV</a> </b> <b class="vimtag"> <a name="'t_CV'">'t_CV'</a> </b>
        t_da    如果非空，上方的行可以向下滚动                  <b class="vimtag"> <a name="t_da">t_da</a> </b> <b class="vimtag"> <a name="'t_da'">'t_da'</a> </b>
        t_db    如果非空，下方的行可以向上滚动                  <b class="vimtag"> <a name="t_db">t_db</a> </b> <b class="vimtag"> <a name="'t_db'">'t_db'</a> </b>
        t_DL    删除若干行                                      <b class="vimtag"> <a name="t_DL">t_DL</a> </b> <b class="vimtag"> <a name="'t_DL'">'t_DL'</a> </b>
        t_dl    删除一行                                        <b class="vimtag"> <a name="t_dl">t_dl</a> </b> <b class="vimtag"> <a name="'t_dl'">'t_dl'</a> </b>
        t_fs    结束设置窗口标题 (退出 termcap 状态行)          <b class="vimtag"> <a name="t_fs">t_fs</a> </b> <b class="vimtag"> <a name="'t_fs'">'t_fs'</a> </b>
        t_ke    结束 "keypad 传输" 模式                         <b class="vimtag"> <a name="t_ke">t_ke</a> </b> <b class="vimtag"> <a name="'t_ke'">'t_ke'</a> </b>
        t_ks    进入 "keypad 传输" 模式                         <b class="vimtag"> <a name="t_ks">t_ks</a> </b> <b class="vimtag"> <a name="'t_ks'">'t_ks'</a> </b>
        t_le    左移光标一个字符                                <b class="vimtag"> <a name="t_le">t_le</a> </b> <b class="vimtag"> <a name="'t_le'">'t_le'</a> </b>
        t_mb    闪烁模式                                        <b class="vimtag"> <a name="t_mb">t_mb</a> </b> <b class="vimtag"> <a name="'t_mb'">'t_mb'</a> </b>
        t_md    加粗模式                                        <b class="vimtag"> <a name="t_md">t_md</a> </b> <b class="vimtag"> <a name="'t_md'">'t_md'</a> </b>
        t_me    普通模式 (撤销 t_mr、t_mb、t_md 和颜色)         <b class="vimtag"> <a name="t_me">t_me</a> </b> <b class="vimtag"> <a name="'t_me'">'t_me'</a> </b>
        t_mr    反转模式                                        <b class="vimtag"> <a name="t_mr">t_mr</a> </b> <b class="vimtag"> <a name="'t_mr'">'t_mr'</a> </b>
        t_ms    如果非空，光标可以在突出/反转模式下移动         <b class="vimtag"> <a name="t_ms">t_ms</a> </b> <b class="vimtag"> <a name="'t_ms'">'t_ms'</a> </b>
        t_nd    非破坏性的空格字符                              <b class="vimtag"> <a name="t_nd">t_nd</a> </b> <b class="vimtag"> <a name="'t_nd'">'t_nd'</a> </b>
        t_op    复位到原先的颜色对                              <b class="vimtag"> <a name="t_op">t_op</a> </b> <b class="vimtag"> <a name="'t_op'">'t_op'</a> </b>
        t_RI    光标右移若干字符                                <b class="vimtag"> <a name="t_RI">t_RI</a> </b> <b class="vimtag"> <a name="'t_RI'">'t_RI'</a> </b>
        t_Sb    设置背景色                                      <b class="vimtag"> <a name="t_Sb">t_Sb</a> </b> <b class="vimtag"> <a name="'t_Sb'">'t_Sb'</a> </b>
        t_Sf    设置前景色                                      <b class="vimtag"> <a name="t_Sf">t_Sf</a> </b> <b class="vimtag"> <a name="'t_Sf'">'t_Sf'</a> </b>
        t_se    结束突出                                        <b class="vimtag"> <a name="t_se">t_se</a> </b> <b class="vimtag"> <a name="'t_se'">'t_se'</a> </b>
        t_so    退出模式                                        <b class="vimtag"> <a name="t_so">t_so</a> </b> <b class="vimtag"> <a name="'t_so'">'t_so'</a> </b>
        t_sr    反向滚动 (往下)                                 <b class="vimtag"> <a name="t_sr">t_sr</a> </b> <b class="vimtag"> <a name="'t_sr'">'t_sr'</a> </b>
        t_te    退出 "termcap" 模式                             <b class="vimtag"> <a name="t_te">t_te</a> </b> <b class="vimtag"> <a name="'t_te'">'t_te'</a> </b>
        t_ti    让终端进入 "termcap" 模式                       <b class="vimtag"> <a name="t_ti">t_ti</a> </b> <b class="vimtag"> <a name="'t_ti'">'t_ti'</a> </b>
        t_ts    开始设置窗口标题 (进入 termcap 状态行)          <b class="vimtag"> <a name="t_ts">t_ts</a> </b> <b class="vimtag"> <a name="'t_ts'">'t_ts'</a> </b>
        t_ue    下划结束                                        <b class="vimtag"> <a name="t_ue">t_ue</a> </b> <b class="vimtag"> <a name="'t_ue'">'t_ue'</a> </b>
        t_us    下划模式                                        <b class="vimtag"> <a name="t_us">t_us</a> </b> <b class="vimtag"> <a name="'t_us'">'t_us'</a> </b>
        t_ut    使用当前背景色清除                              <b class="vimtag"> <a name="t_ut">t_ut</a> </b> <b class="vimtag"> <a name="'t_ut'">'t_ut'</a> </b>
        t_vb    可视铃声                                        <b class="vimtag"> <a name="t_vb">t_vb</a> </b> <b class="vimtag"> <a name="'t_vb'">'t_vb'</a> </b>
        t_ve    光标可见                                        <b class="vimtag"> <a name="t_ve">t_ve</a> </b> <b class="vimtag"> <a name="'t_ve'">'t_ve'</a> </b>
        t_vi    光标不可见                                      <b class="vimtag"> <a name="t_vi">t_vi</a> </b> <b class="vimtag"> <a name="'t_vi'">'t_vi'</a> </b>
        t_vs    光标 "非常" 可见 (闪烁)                         <b class="vimtag"> <a name="t_vs">t_vs</a> </b> <b class="vimtag"> <a name="'t_vs'">'t_vs'</a> </b>
        t_xs    如果非空，突出部分不能通过覆盖删除 (hpterm)     <b class="vimtag"> <a name="t_xs">t_xs</a> </b> <b class="vimtag"> <a name="'t_xs'">'t_xs'</a> </b>
        t_xn    如果非空，在屏幕最后单元里写入字符不导致滚动    <b class="vimtag"> <a name="t_xn">t_xn</a> </b> <b class="vimtag"> <a name="'t_xn'">'t_xn'</a> </b>
        t_ZH    斜体模式                                        <b class="vimtag"> <a name="t_ZH">t_ZH</a> </b> <b class="vimtag"> <a name="'t_ZH'">'t_ZH'</a> </b>
        t_ZR    斜体结束                                        <b class="vimtag"> <a name="t_ZR">t_ZR</a> </b> <b class="vimtag"> <a name="'t_ZR'">'t_ZR'</a> </b>

Vim 增加的 (它们没有标准代码):
        t_AU    设置下划线色 (ANSI)                             <b class="vimtag"> <a name="t_AU">t_AU</a> </b> <b class="vimtag"> <a name="'t_AU'">'t_AU'</a> </b>
        t_Ce    下曲 (undercurl) 和下划线结束                   <b class="vimtag"> <a name="t_Ce">t_Ce</a> </b> <b class="vimtag"> <a name="'t_Ce'">'t_Ce'</a> </b>
        t_Cs    下曲 (波浪状下划线) 模式                        <b class="vimtag"> <a name="t_Cs">t_Cs</a> </b> <b class="vimtag"> <a name="'t_Cs'">'t_Cs'</a> </b>
        t_Us    双下划线模式                                    <b class="vimtag"> <a name="t_Us">t_Us</a> </b> <b class="vimtag"> <a name="'t_Us'">'t_Us'</a> </b>
        t_ds    点状下划线模式                                  <b class="vimtag"> <a name="t_ds">t_ds</a> </b> <b class="vimtag"> <a name="'t_ds'">'t_ds'</a> </b>
        t_Ds    虚线下划线模式                                  <b class="vimtag"> <a name="t_Ds">t_Ds</a> </b> <b class="vimtag"> <a name="'t_Ds'">'t_Ds'</a> </b>
        t_Te    删除线结束                                      <b class="vimtag"> <a name="t_Te">t_Te</a> </b> <b class="vimtag"> <a name="'t_Te'">'t_Te'</a> </b>
        t_Ts    删除线模式                                      <b class="vimtag"> <a name="t_Ts">t_Ts</a> </b> <b class="vimtag"> <a name="'t_Ts'">'t_Ts'</a> </b>
        t_IS    开始设置图标文本                                <b class="vimtag"> <a name="t_IS">t_IS</a> </b> <b class="vimtag"> <a name="'t_IS'">'t_IS'</a> </b>
        t_IE    结束设置图标文本                                <b class="vimtag"> <a name="t_IE">t_IE</a> </b> <b class="vimtag"> <a name="'t_IE'">'t_IE'</a> </b>
        t_WP    设置窗口位置 (Y，X)，以像素计算                 <b class="vimtag"> <a name="t_WP">t_WP</a> </b> <b class="vimtag"> <a name="'t_WP'">'t_WP'</a> </b>
        t_GP    获取窗口位置 (Y，X)，以像素计算                 <b class="vimtag"> <a name="t_GP">t_GP</a> </b> <b class="vimtag"> <a name="'t_GP'">'t_GP'</a> </b>
        t_WS    设置窗口大小 (高度，宽度) 以单元格数计算        <b class="vimtag"> <a name="t_WS">t_WS</a> </b> <b class="vimtag"> <a name="'t_WS'">'t_WS'</a> </b>
        t_VS    光标正常可见 (无闪烁)                           <b class="vimtag"> <a name="t_VS">t_VS</a> </b> <b class="vimtag"> <a name="'t_VS'">'t_VS'</a> </b>
        t_SI    开始插入模式 (条形光标)                         <b class="vimtag"> <a name="t_SI">t_SI</a> </b> <b class="vimtag"> <a name="'t_SI'">'t_SI'</a> </b>
        t_SR    开始替换模式 (下划线光标)                       <b class="vimtag"> <a name="t_SR">t_SR</a> </b> <b class="vimtag"> <a name="'t_SR'">'t_SR'</a> </b>
        t_EI    结束插入或替换模式 (块形光标)                   <b class="vimtag"> <a name="t_EI">t_EI</a> </b> <b class="vimtag"> <a name="'t_EI'">'t_EI'</a> </b>
                 <a href="term.html#termcap-cursor-shape">termcap-cursor-shape</a> 
        t_RV    请求终端版本字符串 (适用于 xterm 和其它终端模   <b class="vimtag"> <a name="t_RV">t_RV</a> </b> <b class="vimtag"> <a name="'t_RV'">'t_RV'</a> </b>
                拟器) 其响应存于  <a href="eval.html#v:termresponse">v:termresponse</a>   <a href="term.html#xterm-8bit">xterm-8bit</a> 
                 <a href="options.html#'ttymouse'">'ttymouse'</a>   <a href="term.html#xterm-codes">xterm-codes</a> 
        t_XM    打开/关闭鼠标报告。                             <b class="vimtag"> <a name="t_XM">t_XM</a> </b> <b class="vimtag"> <a name="'t_XM'">'t_XM'</a> </b>
                见下  <a href="term.html#mouse-reporting">mouse-reporting</a> 
        t_RK    请求终端键盘协议状态；                          <b class="vimtag"> <a name="t_RK">t_RK</a> </b> <b class="vimtag"> <a name="'t_RK'">'t_RK'</a> </b>
                 <a href="term.html#t_TI">t_TI</a>  之后发送
        t_u7    请求光标位置 (适用于 xterm)                     <b class="vimtag"> <a name="t_u7">t_u7</a> </b> <b class="vimtag"> <a name="'t_u7'">'t_u7'</a> </b>
                见  <a href="options.html#'ambiwidth'">'ambiwidth'</a> 
                其响应存于  <code class="badlink">v:term7resp</code> 
        t_RF    请求终端前景色                                  <b class="vimtag"> <a name="t_RF">t_RF</a> </b> <b class="vimtag"> <a name="'t_RF'">'t_RF'</a> </b>
                其响应存于  <code class="badlink">v:termfgresp</code> 
        t_RB    请求终端背景色                                  <b class="vimtag"> <a name="t_RB">t_RB</a> </b> <b class="vimtag"> <a name="'t_RB'">'t_RB'</a> </b>
                其响应存于  <code class="badlink">v:termbgresp</code> 
        t_8f    设置终端前景色 (R, G, B)                        <b class="vimtag"> <a name="t_8f">t_8f</a> </b> <b class="vimtag"> <a name="'t_8f'">'t_8f'</a> </b>
                 <a href="term.html#xterm-true-color">xterm-true-color</a> 
        t_8b    设置终端背景色 (R, G, B)                        <b class="vimtag"> <a name="t_8b">t_8b</a> </b> <b class="vimtag"> <a name="'t_8b'">'t_8b'</a> </b>
                 <a href="term.html#xterm-true-color">xterm-true-color</a> 
        t_8u    设置下划线色 (R, G, B)                          <b class="vimtag"> <a name="t_8u">t_8u</a> </b> <b class="vimtag"> <a name="'t_8u'">'t_8u'</a> </b>
        t_BE    打开括号内粘贴模式                              <b class="vimtag"> <a name="t_BE">t_BE</a> </b> <b class="vimtag"> <a name="'t_BE'">'t_BE'</a> </b>
                 <a href="term.html#xterm-bracketed-paste">xterm-bracketed-paste</a> 
        t_BD    关闭括号内粘贴模式                              <b class="vimtag"> <a name="t_BD">t_BD</a> </b> <b class="vimtag"> <a name="'t_BD'">'t_BD'</a> </b>
                 <a href="term.html#xterm-bracketed-paste">xterm-bracketed-paste</a> 
        t_SC    开始设置光标颜色                                <b class="vimtag"> <a name="t_SC">t_SC</a> </b> <b class="vimtag"> <a name="'t_SC'">'t_SC'</a> </b>
        t_EC    结束设置光标颜色                                <b class="vimtag"> <a name="t_EC">t_EC</a> </b> <b class="vimtag"> <a name="'t_EC'">'t_EC'</a> </b>
        t_SH    设置光标形状                                    <b class="vimtag"> <a name="t_SH">t_SH</a> </b> <b class="vimtag"> <a name="'t_SH'">'t_SH'</a> </b>
        t_RC    请求终端光标闪烁                                <b class="vimtag"> <a name="t_RC">t_RC</a> </b> <b class="vimtag"> <a name="'t_RC'">'t_RC'</a> </b>
                其响应存于  <a href="eval.html#v:termblinkresp">v:termblinkresp</a> 
        t_RS    请求终端光标风格                                <b class="vimtag"> <a name="t_RS">t_RS</a> </b> <b class="vimtag"> <a name="'t_RS'">'t_RS'</a> </b>
                其响应存于  <a href="eval.html#v:termstyleresp">v:termstyleresp</a> 
        t_ST    在栈中保存窗口标题                              <b class="vimtag"> <a name="t_ST">t_ST</a> </b> <b class="vimtag"> <a name="'t_ST'">'t_ST'</a> </b>
        t_RT    从栈中恢复窗口标题                              <b class="vimtag"> <a name="t_RT">t_RT</a> </b> <b class="vimtag"> <a name="'t_RT'">'t_RT'</a> </b>
        t_Si    在栈中保存图标文本                              <b class="vimtag"> <a name="t_Si">t_Si</a> </b> <b class="vimtag"> <a name="'t_Si'">'t_Si'</a> </b>
        t_Ri    从栈中恢复图标文本                              <b class="vimtag"> <a name="t_Ri">t_Ri</a> </b> <b class="vimtag"> <a name="'t_Ri'">'t_Ri'</a> </b>
        t_TE    结束 "raw" 模式                                 <b class="vimtag"> <a name="t_TE">t_TE</a> </b> <b class="vimtag"> <a name="'t_TE'">'t_TE'</a> </b>
        t_TI    让终端进入 "raw" 模式                           <b class="vimtag"> <a name="t_TI">t_TI</a> </b> <b class="vimtag"> <a name="'t_TI'">'t_TI'</a> </b>
        t_fe    打开焦点事件跟踪                                <b class="vimtag"> <a name="t_fe">t_fe</a> </b> <b class="vimtag"> <a name="'t_fe'">'t_fe'</a> </b>
                 <a href="term.html#xterm-focus-event">xterm-focus-event</a> 
        t_fd    关闭焦点事件跟踪                                <b class="vimtag"> <a name="t_fd">t_fd</a> </b> <b class="vimtag"> <a name="'t_fd'">'t_fd'</a> </b>
                 <a href="term.html#xterm-focus-event">xterm-focus-event</a> 

有些代码有开始、中间和结束部分。开始和结束由 termcap 选项定义，中间部分是文
本。
        设置标题文本:     t_ts {title text} t_fs
        设置图标文本:     t_IS {icon text} t_IE
        设置光标颜色:     t_SC  {color name}  t_EC

t_SH 必须提供一个参数:
        0、1 或无       闪烁块状光标
        2               块状光标
        3               闪烁下划光标
        4               下划光标
        5               产供垂直条光标
        6               垂直条光标

仅当接收到 t_RV 的反馈时才会发送 t_RS。Mac OS 上如果 termresponse 不能识别到
Terminal.app 也不会用它。

                                                        <b class="vimtag"> <a name="mouse-reporting">mouse-reporting</a> </b>
许多终端报告鼠标点击，有些能报告鼠标移动和拖动。Vim 需要知道为些使用哪些键码。

为此，使用 "XM" terminfo/termcap 项目。Vim 也有 <a href="options.html#'ttymouse'">'ttymouse'</a> 选项来指定使用的鼠
标协议。可用值见该选项。

如果 Vim 可以读取 "XM" terminfo/termcap 项目，会用之打开和关闭鼠标报告。如果该
项目不存在，则使用 <a href="options.html#'ttymouse'">'ttymouse'</a> 的值来决定。

如果 "XM" 项目存在且首项为 "1006"，设置 <a href="options.html#'ttymouse'">'ttymouse'</a> 为 "sgr"，除非它已有赋值。


键 代 码                                                <b class="vimtag"> <a name="terminal-key-codes">terminal-key-codes</a> </b>
<code class="note">备注</code>: 尽量使用 <code class="special">&lt;&gt;</code> 形式

<code class="section">        选项    名字            含义    </code>

        t_ku    <code class="special">&lt;Up&gt;</code>            光标上移                        <b class="vimtag"> <a name="t_ku">t_ku</a> </b> <b class="vimtag"> <a name="'t_ku'">'t_ku'</a> </b>
        t_kd    <code class="special">&lt;Down&gt;</code>          光标下移                        <b class="vimtag"> <a name="t_kd">t_kd</a> </b> <b class="vimtag"> <a name="'t_kd'">'t_kd'</a> </b>
        t_kr    <code class="special">&lt;Right&gt;</code>         光标右移                        <b class="vimtag"> <a name="t_kr">t_kr</a> </b> <b class="vimtag"> <a name="'t_kr'">'t_kr'</a> </b>
        t_kl    <code class="special">&lt;Left&gt;</code>          光标左移                        <b class="vimtag"> <a name="t_kl">t_kl</a> </b> <b class="vimtag"> <a name="'t_kl'">'t_kl'</a> </b>
                <code class="special">&lt;xUp&gt;</code>           替代的光标上移                  <b class="vimtag"> <a name="%3CxUp%3E">&lt;xUp&gt;</a> </b>
                <code class="special">&lt;xDown&gt;</code>         替代的光标下移                  <b class="vimtag"> <a name="%3CxDown%3E">&lt;xDown&gt;</a> </b>
                <code class="special">&lt;xRight&gt;</code>        替代的光标右移                  <b class="vimtag"> <a name="%3CxRight%3E">&lt;xRight&gt;</a> </b>
                <code class="special">&lt;xLeft&gt;</code>         替代的光标左移                  <b class="vimtag"> <a name="%3CxLeft%3E">&lt;xLeft&gt;</a> </b>
                <code class="special">&lt;S-Up&gt;</code>          shift 光标上移
                <code class="special">&lt;S-Down&gt;</code>        shift 光标下移
        t_%i    <code class="special">&lt;S-Right&gt;</code>       shift 光标右移                  <b class="vimtag"> <a name="t_%i">t_%i</a> </b> <b class="vimtag"> <a name="'t_%i'">'t_%i'</a> </b>
        t_#4    <code class="special">&lt;S-Left&gt;</code>        shift 光标左移                  <b class="vimtag"> <a name="t_%234">t_#4</a> </b> <b class="vimtag"> <a name="'t_%234'">'t_#4'</a> </b>
        t_k1    <code class="special">&lt;F1&gt;</code>            功能键 1                        <b class="vimtag"> <a name="t_k1">t_k1</a> </b> <b class="vimtag"> <a name="'t_k1'">'t_k1'</a> </b>
                <code class="special">&lt;xF1&gt;</code>           替代的 F1                       <b class="vimtag"> <a name="%3CxF1%3E">&lt;xF1&gt;</a> </b>
        t_k2    <code class="special">&lt;F2&gt;</code>            功能键 2                <b class="vimtag"> <a name="%3CF2%3E">&lt;F2&gt;</a> </b>  <b class="vimtag"> <a name="t_k2">t_k2</a> </b> <b class="vimtag"> <a name="'t_k2'">'t_k2'</a> </b>
                <code class="special">&lt;xF2&gt;</code>           替代的 F2                       <b class="vimtag"> <a name="%3CxF2%3E">&lt;xF2&gt;</a> </b>
        t_k3    <code class="special">&lt;F3&gt;</code>            功能键 3                <b class="vimtag"> <a name="%3CF3%3E">&lt;F3&gt;</a> </b>  <b class="vimtag"> <a name="t_k3">t_k3</a> </b> <b class="vimtag"> <a name="'t_k3'">'t_k3'</a> </b>
                <code class="special">&lt;xF3&gt;</code>           替代的 F3                       <b class="vimtag"> <a name="%3CxF3%3E">&lt;xF3&gt;</a> </b>
        t_k4    <code class="special">&lt;F4&gt;</code>            功能键 4                <b class="vimtag"> <a name="%3CF4%3E">&lt;F4&gt;</a> </b>  <b class="vimtag"> <a name="t_k4">t_k4</a> </b> <b class="vimtag"> <a name="'t_k4'">'t_k4'</a> </b>
                <code class="special">&lt;xF4&gt;</code>           替代的 F4                       <b class="vimtag"> <a name="%3CxF4%3E">&lt;xF4&gt;</a> </b>
        t_k5    <code class="special">&lt;F5&gt;</code>            功能键 5                <b class="vimtag"> <a name="%3CF5%3E">&lt;F5&gt;</a> </b>  <b class="vimtag"> <a name="t_k5">t_k5</a> </b> <b class="vimtag"> <a name="'t_k5'">'t_k5'</a> </b>
        t_k6    <code class="special">&lt;F6&gt;</code>            功能键 6                <b class="vimtag"> <a name="%3CF6%3E">&lt;F6&gt;</a> </b>  <b class="vimtag"> <a name="t_k6">t_k6</a> </b> <b class="vimtag"> <a name="'t_k6'">'t_k6'</a> </b>
        t_k7    <code class="special">&lt;F7&gt;</code>            功能键 7                <b class="vimtag"> <a name="%3CF7%3E">&lt;F7&gt;</a> </b>  <b class="vimtag"> <a name="t_k7">t_k7</a> </b> <b class="vimtag"> <a name="'t_k7'">'t_k7'</a> </b>
        t_k8    <code class="special">&lt;F8&gt;</code>            功能键 8                <b class="vimtag"> <a name="%3CF8%3E">&lt;F8&gt;</a> </b>  <b class="vimtag"> <a name="t_k8">t_k8</a> </b> <b class="vimtag"> <a name="'t_k8'">'t_k8'</a> </b>
        t_k9    <code class="special">&lt;F9&gt;</code>            功能键 9                <b class="vimtag"> <a name="%3CF9%3E">&lt;F9&gt;</a> </b>  <b class="vimtag"> <a name="t_k9">t_k9</a> </b> <b class="vimtag"> <a name="'t_k9'">'t_k9'</a> </b>
        t_k;    <code class="special">&lt;F10&gt;</code>           功能键 10               <b class="vimtag"> <a name="%3CF10%3E">&lt;F10&gt;</a> </b> <b class="vimtag"> <a name="t_k;">t_k;</a> </b> <b class="vimtag"> <a name="'t_k;'">'t_k;'</a> </b>
        t_F1    <code class="special">&lt;F11&gt;</code>           功能键 11               <b class="vimtag"> <a name="%3CF11%3E">&lt;F11&gt;</a> </b> <b class="vimtag"> <a name="t_F1">t_F1</a> </b> <b class="vimtag"> <a name="'t_F1'">'t_F1'</a> </b>
        t_F2    <code class="special">&lt;F12&gt;</code>           功能键 12               <b class="vimtag"> <a name="%3CF12%3E">&lt;F12&gt;</a> </b> <b class="vimtag"> <a name="t_F2">t_F2</a> </b> <b class="vimtag"> <a name="'t_F2'">'t_F2'</a> </b>
        t_F3    <code class="special">&lt;F13&gt;</code>           功能键 13               <b class="vimtag"> <a name="%3CF13%3E">&lt;F13&gt;</a> </b> <b class="vimtag"> <a name="t_F3">t_F3</a> </b> <b class="vimtag"> <a name="'t_F3'">'t_F3'</a> </b>
        t_F4    <code class="special">&lt;F14&gt;</code>           功能键 14               <b class="vimtag"> <a name="%3CF14%3E">&lt;F14&gt;</a> </b> <b class="vimtag"> <a name="t_F4">t_F4</a> </b> <b class="vimtag"> <a name="'t_F4'">'t_F4'</a> </b>
        t_F5    <code class="special">&lt;F15&gt;</code>           功能键 15               <b class="vimtag"> <a name="%3CF15%3E">&lt;F15&gt;</a> </b> <b class="vimtag"> <a name="t_F5">t_F5</a> </b> <b class="vimtag"> <a name="'t_F5'">'t_F5'</a> </b>
        t_F6    <code class="special">&lt;F16&gt;</code>           功能键 16               <b class="vimtag"> <a name="%3CF16%3E">&lt;F16&gt;</a> </b> <b class="vimtag"> <a name="t_F6">t_F6</a> </b> <b class="vimtag"> <a name="'t_F6'">'t_F6'</a> </b>
        t_F7    <code class="special">&lt;F17&gt;</code>           功能键 17               <b class="vimtag"> <a name="%3CF17%3E">&lt;F17&gt;</a> </b> <b class="vimtag"> <a name="t_F7">t_F7</a> </b> <b class="vimtag"> <a name="'t_F7'">'t_F7'</a> </b>
        t_F8    <code class="special">&lt;F18&gt;</code>           功能键 18               <b class="vimtag"> <a name="%3CF18%3E">&lt;F18&gt;</a> </b> <b class="vimtag"> <a name="t_F8">t_F8</a> </b> <b class="vimtag"> <a name="'t_F8'">'t_F8'</a> </b>
        t_F9    <code class="special">&lt;F19&gt;</code>           功能键 19               <b class="vimtag"> <a name="%3CF19%3E">&lt;F19&gt;</a> </b> <b class="vimtag"> <a name="t_F9">t_F9</a> </b> <b class="vimtag"> <a name="'t_F9'">'t_F9'</a> </b>
                <code class="special">&lt;S-F1&gt;</code>          shift 功能键 1
                <code class="special">&lt;S-xF1&gt;</code>         替代的 <code class="special">&lt;S-F1&gt;</code>                   <b class="vimtag"> <a name="%3CS-xF1%3E">&lt;S-xF1&gt;</a> </b>
                <code class="special">&lt;S-F2&gt;</code>          shift 功能键 2                  <b class="vimtag"> <a name="%3CS-F2%3E">&lt;S-F2&gt;</a> </b>
                <code class="special">&lt;S-xF2&gt;</code>         替代的 <code class="special">&lt;S-F2&gt;</code>                   <b class="vimtag"> <a name="%3CS-xF2%3E">&lt;S-xF2&gt;</a> </b>
                <code class="special">&lt;S-F3&gt;</code>          shift 功能键 3                  <b class="vimtag"> <a name="%3CS-F3%3E">&lt;S-F3&gt;</a> </b>
                <code class="special">&lt;S-xF3&gt;</code>         替代的 <code class="special">&lt;S-F3&gt;</code>                   <b class="vimtag"> <a name="%3CS-xF3%3E">&lt;S-xF3&gt;</a> </b>
                <code class="special">&lt;S-F4&gt;</code>          shift 功能键 4                  <b class="vimtag"> <a name="%3CS-F4%3E">&lt;S-F4&gt;</a> </b>
                <code class="special">&lt;S-xF4&gt;</code>         替代的 <code class="special">&lt;S-F4&gt;</code>                   <b class="vimtag"> <a name="%3CS-xF4%3E">&lt;S-xF4&gt;</a> </b>
                <code class="special">&lt;S-F5&gt;</code>          shift 功能键 5                  <b class="vimtag"> <a name="%3CS-F5%3E">&lt;S-F5&gt;</a> </b>
                <code class="special">&lt;S-F6&gt;</code>          shift 功能键 6                  <b class="vimtag"> <a name="%3CS-F6%3E">&lt;S-F6&gt;</a> </b>
                <code class="special">&lt;S-F7&gt;</code>          shift 功能键 7                  <b class="vimtag"> <a name="%3CS-F7%3E">&lt;S-F7&gt;</a> </b>
                <code class="special">&lt;S-F8&gt;</code>          shift 功能键 8                  <b class="vimtag"> <a name="%3CS-F8%3E">&lt;S-F8&gt;</a> </b>
                <code class="special">&lt;S-F9&gt;</code>          shift 功能键 9                  <b class="vimtag"> <a name="%3CS-F9%3E">&lt;S-F9&gt;</a> </b>
                <code class="special">&lt;S-F10&gt;</code>         shift 功能键 10                 <b class="vimtag"> <a name="%3CS-F10%3E">&lt;S-F10&gt;</a> </b>
                <code class="special">&lt;S-F11&gt;</code>         shift 功能键 11                 <b class="vimtag"> <a name="%3CS-F11%3E">&lt;S-F11&gt;</a> </b>
                <code class="special">&lt;S-F12&gt;</code>         shift 功能键 12                 <b class="vimtag"> <a name="%3CS-F12%3E">&lt;S-F12&gt;</a> </b>
        t_%1    <code class="special">&lt;Help&gt;</code>          帮助键                          <b class="vimtag"> <a name="t_%1">t_%1</a> </b> <b class="vimtag"> <a name="'t_%1'">'t_%1'</a> </b>
        t_&amp;8    <code class="special">&lt;Undo&gt;</code>          撤销键                          <b class="vimtag"> <a name="t_&8">t_&amp;8</a> </b> <b class="vimtag"> <a name="'t_&8'">'t_&amp;8'</a> </b>
        t_kI    <code class="special">&lt;Insert&gt;</code>        插入键                          <b class="vimtag"> <a name="t_kI">t_kI</a> </b> <b class="vimtag"> <a name="'t_kI'">'t_kI'</a> </b>
                <code class="special">&lt;kInsert&gt;</code>       keypad 插入键
        t_kD    <code class="special">&lt;Del&gt;</code>           删除键                          <b class="vimtag"> <a name="t_kD">t_kD</a> </b> <b class="vimtag"> <a name="'t_kD'">'t_kD'</a> </b>
        t_kb    <code class="special">&lt;BS&gt;</code>            退格键                          <b class="vimtag"> <a name="t_kb">t_kb</a> </b> <b class="vimtag"> <a name="'t_kb'">'t_kb'</a> </b>
        t_kB    <code class="special">&lt;S-Tab&gt;</code>         反制表 (shift-tab)    <b class="vimtag"> <a name="%3CS-Tab%3E">&lt;S-Tab&gt;</a> </b> <b class="vimtag"> <a name="t_kB">t_kB</a> </b> <b class="vimtag"> <a name="'t_kB'">'t_kB'</a> </b>
        t_kh    <code class="special">&lt;Home&gt;</code>          home 键                         <b class="vimtag"> <a name="t_kh">t_kh</a> </b> <b class="vimtag"> <a name="'t_kh'">'t_kh'</a> </b>
        t_#2    <code class="special">&lt;S-Home&gt;</code>        shift home 键        <b class="vimtag"> <a name="%3CS-Home%3E">&lt;S-Home&gt;</a> </b> <b class="vimtag"> <a name="t_%232">t_#2</a> </b> <b class="vimtag"> <a name="'t_%232'">'t_#2'</a> </b>
                <code class="special">&lt;xHome&gt;</code>         替代的 home 键                  <b class="vimtag"> <a name="%3CxHome%3E">&lt;xHome&gt;</a> </b>
        t_@7    <code class="special">&lt;End&gt;</code>           end 键                          <b class="vimtag"> <a name="t_@7">t_@7</a> </b> <b class="vimtag"> <a name="'t_@7'">'t_@7'</a> </b>
        t_*7    <code class="special">&lt;S-End&gt;</code>         shift end 键    <b class="vimtag"> <a name="%3CS-End%3E">&lt;S-End&gt;</a> </b> <b class="vimtag"> <a name="t_star7">t_star7</a> </b> <b class="vimtag"> <a name="'t_star7'">'t_star7'</a> </b>
                <code class="special">&lt;xEnd&gt;</code>          替代的 end 键                   <b class="vimtag"> <a name="%3CxEnd%3E">&lt;xEnd&gt;</a> </b>
        t_kP    <code class="special">&lt;PageUp&gt;</code>        page-up 键                      <b class="vimtag"> <a name="t_kP">t_kP</a> </b> <b class="vimtag"> <a name="'t_kP'">'t_kP'</a> </b>
        t_kN    <code class="special">&lt;PageDown&gt;</code>      page-down 键                    <b class="vimtag"> <a name="t_kN">t_kN</a> </b> <b class="vimtag"> <a name="'t_kN'">'t_kN'</a> </b>
        t_K1    <code class="special">&lt;kHome&gt;</code>         keypad home 键                  <b class="vimtag"> <a name="t_K1">t_K1</a> </b> <b class="vimtag"> <a name="'t_K1'">'t_K1'</a> </b>
        t_K4    <code class="special">&lt;kEnd&gt;</code>          keypad end 键                   <b class="vimtag"> <a name="t_K4">t_K4</a> </b> <b class="vimtag"> <a name="'t_K4'">'t_K4'</a> </b>
        t_K3    <code class="special">&lt;kPageUp&gt;</code>       keypad page-up 键               <b class="vimtag"> <a name="t_K3">t_K3</a> </b> <b class="vimtag"> <a name="'t_K3'">'t_K3'</a> </b>
        t_K5    <code class="special">&lt;kPageDown&gt;</code>     keypad page-down 键             <b class="vimtag"> <a name="t_K5">t_K5</a> </b> <b class="vimtag"> <a name="'t_K5'">'t_K5'</a> </b>
        t_K6    <code class="special">&lt;kPlus&gt;</code>         keypad 加号键         <b class="vimtag"> <a name="%3CkPlus%3E">&lt;kPlus&gt;</a> </b> <b class="vimtag"> <a name="t_K6">t_K6</a> </b> <b class="vimtag"> <a name="'t_K6'">'t_K6'</a> </b>
        t_K7    <code class="special">&lt;kMinus&gt;</code>        keypad 减号键     <b class="vimtag"> <a name="%3CkMinus%3E">&lt;kMinus&gt;</a> </b>    <b class="vimtag"> <a name="t_K7">t_K7</a> </b> <b class="vimtag"> <a name="'t_K7'">'t_K7'</a> </b>
        t_K8    <code class="special">&lt;kDivide&gt;</code>       keypad 除号         <b class="vimtag"> <a name="%3CkDivide%3E">&lt;kDivide&gt;</a> </b> <b class="vimtag"> <a name="t_K8">t_K8</a> </b> <b class="vimtag"> <a name="'t_K8'">'t_K8'</a> </b>
        t_K9    <code class="special">&lt;kMultiply&gt;</code>     keypad 乘号       <b class="vimtag"> <a name="%3CkMultiply%3E">&lt;kMultiply&gt;</a> </b> <b class="vimtag"> <a name="t_K9">t_K9</a> </b> <b class="vimtag"> <a name="'t_K9'">'t_K9'</a> </b>
        t_KA    <code class="special">&lt;kEnter&gt;</code>        keypad 回车键     <b class="vimtag"> <a name="%3CkEnter%3E">&lt;kEnter&gt;</a> </b>    <b class="vimtag"> <a name="t_KA">t_KA</a> </b> <b class="vimtag"> <a name="'t_KA'">'t_KA'</a> </b>
        t_KB    <code class="special">&lt;kPoint&gt;</code>        keypad 小数点     <b class="vimtag"> <a name="%3CkPoint%3E">&lt;kPoint&gt;</a> </b>    <b class="vimtag"> <a name="t_KB">t_KB</a> </b> <b class="vimtag"> <a name="'t_KB'">'t_KB'</a> </b>
        t_KC    <code class="special">&lt;k0&gt;</code>            keypad 0                 <b class="vimtag"> <a name="%3Ck0%3E">&lt;k0&gt;</a> </b> <b class="vimtag"> <a name="t_KC">t_KC</a> </b> <b class="vimtag"> <a name="'t_KC'">'t_KC'</a> </b>
        t_KD    <code class="special">&lt;k1&gt;</code>            keypad 1                 <b class="vimtag"> <a name="%3Ck1%3E">&lt;k1&gt;</a> </b> <b class="vimtag"> <a name="t_KD">t_KD</a> </b> <b class="vimtag"> <a name="'t_KD'">'t_KD'</a> </b>
        t_KE    <code class="special">&lt;k2&gt;</code>            keypad 2                 <b class="vimtag"> <a name="%3Ck2%3E">&lt;k2&gt;</a> </b> <b class="vimtag"> <a name="t_KE">t_KE</a> </b> <b class="vimtag"> <a name="'t_KE'">'t_KE'</a> </b>
        t_KF    <code class="special">&lt;k3&gt;</code>            keypad 3                 <b class="vimtag"> <a name="%3Ck3%3E">&lt;k3&gt;</a> </b> <b class="vimtag"> <a name="t_KF">t_KF</a> </b> <b class="vimtag"> <a name="'t_KF'">'t_KF'</a> </b>
        t_KG    <code class="special">&lt;k4&gt;</code>            keypad 4                 <b class="vimtag"> <a name="%3Ck4%3E">&lt;k4&gt;</a> </b> <b class="vimtag"> <a name="t_KG">t_KG</a> </b> <b class="vimtag"> <a name="'t_KG'">'t_KG'</a> </b>
        t_KH    <code class="special">&lt;k5&gt;</code>            keypad 5                 <b class="vimtag"> <a name="%3Ck5%3E">&lt;k5&gt;</a> </b> <b class="vimtag"> <a name="t_KH">t_KH</a> </b> <b class="vimtag"> <a name="'t_KH'">'t_KH'</a> </b>
        t_KI    <code class="special">&lt;k6&gt;</code>            keypad 6                 <b class="vimtag"> <a name="%3Ck6%3E">&lt;k6&gt;</a> </b> <b class="vimtag"> <a name="t_KI">t_KI</a> </b> <b class="vimtag"> <a name="'t_KI'">'t_KI'</a> </b>
        t_KJ    <code class="special">&lt;k7&gt;</code>            keypad 7                 <b class="vimtag"> <a name="%3Ck7%3E">&lt;k7&gt;</a> </b> <b class="vimtag"> <a name="t_KJ">t_KJ</a> </b> <b class="vimtag"> <a name="'t_KJ'">'t_KJ'</a> </b>
        t_KK    <code class="special">&lt;k8&gt;</code>            keypad 8                 <b class="vimtag"> <a name="%3Ck8%3E">&lt;k8&gt;</a> </b> <b class="vimtag"> <a name="t_KK">t_KK</a> </b> <b class="vimtag"> <a name="'t_KK'">'t_KK'</a> </b>
        t_KL    <code class="special">&lt;k9&gt;</code>            keypad 9                 <b class="vimtag"> <a name="%3Ck9%3E">&lt;k9&gt;</a> </b> <b class="vimtag"> <a name="t_KL">t_KL</a> </b> <b class="vimtag"> <a name="'t_KL'">'t_KL'</a> </b>
                <code class="special">&lt;Mouse&gt;</code>         鼠标代码的引导键                <b class="vimtag"> <a name="%3CMouse%3E">&lt;Mouse&gt;</a> </b>

        t_PS    <code class="special">&lt;PasteStart&gt;</code>    括号内粘贴的开始                <b class="vimtag"> <a name="t_PS">t_PS</a> </b> <b class="vimtag"> <a name="'t_PS'">'t_PS'</a> </b>
                                 <a href="term.html#xterm-bracketed-paste">xterm-bracketed-paste</a>  
        t_PE    <code class="special">&lt;PasteEnd&gt;</code>      括号内粘贴的结束                <b class="vimtag"> <a name="t_PE">t_PE</a> </b> <b class="vimtag"> <a name="'t_PE'">'t_PE'</a> </b>
                                 <a href="term.html#xterm-bracketed-paste">xterm-bracketed-paste</a>  
                <code class="special">&lt;FocusGained&gt;</code>   Vim 窗口获得焦点 (仅限内部使用)
                <code class="special">&lt;FocusLost&gt;</code>     Vim 窗口失去焦点 (仅限内部使用)

关于 t_so 和 t_mr 的 <code class="note">注意</code> 事项: 如果 termcap 项目 "so" 不存在，则使用 "mr" 的
项目。反之亦然。"se" 和 "me" 也是一样。如果你的终端同时支持反转和突出模式，你
可以看到两种不同的模式。如果只支持其中一种，则两者看起来一样。

                                                        <b class="vimtag"> <a name="keypad-comma">keypad-comma</a> </b>
keypad 键在没有映射时和等价的普通键等价。但有一个特例: 如果你的 keypad 有逗号
而不是小数点，Vim 仍然认为那是小数点。下面的映射可以修正这个问题: 
<code class="example">        :noremap &lt;kPoint&gt; ,</code>
<code class="example">        :noremap! &lt;kPoint&gt; ,</code>
                                                        <b class="vimtag"> <a name="xterm-codes">xterm-codes</a> </b>
得到键码有一个特殊的技巧，现在这只适用于 xterm。如果定义了  <a href="term.html#t_RV">t_RV</a> ，而且得到的
响应指示使用的版本是补丁级别不低于 141 的 xterm，Vim 就使用特殊的转义序列来从
xterm 里直接取得键码。响应的内容用于调整各种 t_ 代码。这样，xterm 可能根据所处
的模式 (8-位、VT102、VT220，等等) 产生不同代码的问题就避免了。结果是，<code class="special">&lt;xF1&gt;</code> 这
样的代码就不需要了。

<a href="term.html#'t_Co'">'t_Co'</a> 是其中一个可修改的代码，色彩数。这会触发重画。如果有问题，尽早复位
<a href="options.html#'xtermcodes'">'xtermcodes'</a> 选项: 
<code class="example">        set noxtermcodes</code>
<code class="example"></code>
<code class="note">注意</code>: 请求键码只能在启动时完成。如果 xterm 选项在 Vim 启动以后被改变，这些转义
序列就不再能识别了。

                                                        <b class="vimtag"> <a name="xterm-true-color">xterm-true-color</a> </b>
只要终端支持，Vim 支持终端真彩 (使用  <a href="syntax.html#highlight-guifg">highlight-guifg</a>  和  <a href="syntax.html#highlight-guibg">highlight-guibg</a> )。
为此，置位 <a href="options.html#'termguicolors'">'termguicolors'</a> 选项。
<a href="https://gist.github.com/XVilka/8346728">https://gist.github.com/XVilka/8346728</a> 有支持真彩的终端列表。

 <a href="term.html#t_8f">t_8f</a>  和  <a href="term.html#t_8b">t_8b</a>  termcap 项目告知终端使用何种 RGB 色。这些选项的缺省值应适用于
大多数终端。不合适的话可手动设置。它们的缺省值是: 
<code class="example">         let &amp;t_8f = "\&lt;Esc&gt;[38;2;%lu;%lu;%lum"</code>
<code class="example">         let &amp;t_8b = "\&lt;Esc&gt;[48;2;%lu;%lu;%lum"</code>
<code class="example"></code>
有些终端也接受相同的序列，但把所有的分号替换为冒号 (这样实际更兼容，但支持不是
那么广泛): 
<code class="example">         let &amp;t_8f = "\&lt;Esc&gt;[38:2:%lu:%lu:%lum"</code>
<code class="example">         let &amp;t_8b = "\&lt;Esc&gt;[48:2:%lu:%lu:%lum"</code>
<code class="example"></code>
这些选项包含 printf 字符串，调用  <a href="builtin.html#printf()">printf()</a>  (实际上，它的 C 等价函数，因此带有
 <a href="motion.html#l">l</a>  修饰符) 时带上 t_ 选项值和三个无符号长整数，分别代表红、绿和蓝色的 0 到
255 (包含) 之间的任意值。

                                                        <b class="vimtag"> <a name="xterm-resize">xterm-resize</a> </b>
xterm 改变窗口大小的功能只用在 allowWindowOps 资源打开时才可用。有些系统或有些
版本的 xterm 缺省该值是关闭的，因为有安全上的考虑。我们不肯定是否真有此必要。

要覆盖缺省值，在 ~/.Xdefaults 或 ~/.Xresources 中放入:

<code class="example">        XTerm*allowWindowOps:           true</code>
<code class="example"></code>
然后运行 "xrdb -merge .Xresources" 以激活之。用上下文菜单可以检查该值 (按住
CTRL 键的同时按鼠标右键)，在 allow-window-ops 边上应该打了勾。

                                                        <b class="vimtag"> <a name="xterm-focus-event">xterm-focus-event</a> </b>
有些包含 xterm 支持的终端支持焦点事件跟踪特性。用 <a href="term.html#'t_fe'">'t_fe'</a> 序列打开此功能后，每
次终端获得或丧失焦点时，终端都会给 Vim 发送特殊的键序列。Vim 对此进行处理，并
触发焦点事件 ( <a href="autocmd.html#FocusGained">FocusGained</a> / <a href="autocmd.html#FocusLost">FocusLost</a> )。退出 "raw" 模式时，<a href="term.html#'t_fd'">'t_fd'</a> 序列会用来
关闭焦点事件跟踪。如果要关闭此特性，在 .vimrc 里加入:
        `set t_fd=`
        `set t_fe=`
如果终端支持但 Vim 不识别此终端，需要你自己设置这些选项: 
<code class="example">        let &amp;t_fe = "\&lt;Esc&gt;[?1004h"</code>
<code class="example">        let &amp;t_fd = "\&lt;Esc&gt;[?1004l"</code>
<code class="example">        execute "set &lt;FocusGained&gt;=\&lt;Esc&gt;[I"</code>
<code class="example">        execute "set &lt;FocusLost&gt;=\&lt;Esc&gt;[O"</code>
Vim 启动时如果显示出现乱码，那么这些设置有问题。

                                                        <b class="vimtag"> <a name="termcap-colors">termcap-colors</a> </b>
关于颜色的 <code class="note">注意</code> 事项: <a href="term.html#'t_Co'">'t_Co'</a> 选项告诉 Vim 可用的颜色数。如果非零，<a href="term.html#'t_AB'">'t_AB'</a> 和
<a href="term.html#'t_AF'">'t_AF'</a> 选项可以用来设置颜色。如果这些都不可用，就使用 <a href="term.html#'t_Sb'">'t_Sb'</a> 和 <a href="term.html#'t_Sf'">'t_Sf'</a>。<a href="term.html#'t_me'">'t_me'</a>
用来复位到缺省的颜色设置。另见 <a href="options.html#'termguicolors'">'termguicolors'</a>。
GUI 运行时，<a href="term.html#'t_Co'">'t_Co'</a> 设为 16777216。

                                <b class="vimtag"> <a name="termcap-cursor-shape">termcap-cursor-shape</a> </b> <b class="vimtag"> <a name="termcap-cursor-color">termcap-cursor-color</a> </b>
Vim 进入插入模式时，发送 <a href="term.html#'t_SI'">'t_SI'</a> 转义序列。Vim 进入替换模式而 <a href="term.html#'t_SR'">'t_SR'</a> 已设置时，
发送 <a href="term.html#'t_SR'">'t_SR'</a> 转义序列，否则发送 <a href="term.html#'t_SI'">'t_SI'</a>。当离开插入或替换模式时，发送 <a href="term.html#'t_EI'">'t_EI'</a>。
<code class="note">备注</code>: 没设置 <a href="term.html#'t_EI'">'t_EI'</a> 时，不会发送 <a href="term.html#'t_SI'">'t_SI'</a> 和 <a href="term.html#'t_SR'">'t_SR'</a>。而没设置 <a href="term.html#'t_SI'">'t_SI'</a> 或 <a href="term.html#'t_SR'">'t_SR'</a>
时，<a href="term.html#'t_EI'">'t_EI'</a> 只会发送一次。

这可以用来改变插入模式下光标的形状或颜色。它们不是标准的 termcap/terminfo 项
目，你需要自己设定。
一个 xterm 的例子，改变光标颜色: 
<code class="example">    if &amp;term =~ "xterm"</code>
<code class="example">        let &amp;t_SI = "\&lt;Esc&gt;]12;purple\x7"</code>
<code class="example">        let &amp;t_SR = "\&lt;Esc&gt;]12;red\x7"</code>
<code class="example">        let &amp;t_EI = "\&lt;Esc&gt;]12;blue\x7"</code>
<code class="example">    endif</code>

<code class="note">注意</code>: 当 Vim 退出时，将保留普通模式的光标形状，而不会恢复 Vim 启动之前的形状。

Windows 终端可用以下代码: 
<code class="example">    " 注意: 应在 `set termguicolors` 或 `set t_Co=256` 之后设置。</code>
<code class="example">    if &amp;term =~ 'xterm' || &amp;term == 'win32'</code>
<code class="example">        " 使用 DECSCUSR 转义序列</code>
<code class="example">        let &amp;t_SI = "\e[5 q"    " 闪烁竖线</code>
<code class="example">        let &amp;t_SR = "\e[3 q"    " 闪烁下划线</code>
<code class="example">        let &amp;t_EI = "\e[1 q"    " 闪烁块状</code>
<code class="example">        let &amp;t_ti ..= "\e[1 q"   " 闪烁块状</code>
<code class="example">        let &amp;t_te ..= "\e[0 q"   " 缺省 (取决于终端，通常是闪烁块状)</code>
<code class="example">    endif</code>
<code class="example"></code>
<code class="notvi">{仅当编译时加入  <a href="various.html#+cursorshape">+cursorshape</a>  特性才支持}</code>

                                                        <b class="vimtag"> <a name="termcap-title">termcap-title</a> </b>
如果终端允许通过发送字符串设置标题的话，<a href="term.html#'t_ts'">'t_ts'</a> 和 <a href="term.html#'t_fs'">'t_fs'</a> 选项用来设置窗口的标
题。在发送标题字符串之前和之后分别发送两者。类似的，<a href="term.html#'t_IS'">'t_IS'</a> 和 <a href="term.html#'t_IE'">'t_IE'</a>  用来设置
图标文本。这些是 Vim 内部对 Unix termcap 的扩展，所以它们的值不能从外部
termcap 获取。不过，内建的 termcap 包含 xterm 和 iris-ansi 的合适的项目，所以
你不需要在这里设置。
                                                        <b class="vimtag"> <a name="hpterm">hpterm</a> </b>
如果反转和其他高亮方式不工作，尝试设置 <a href="term.html#'t_xs'">'t_xs'</a> 选项为非空字符串。这使得 <a href="term.html#'t_ce'">'t_ce'</a>
代码可以用于从行里撤销高亮。对 "hpterm" 这是必需的。置位 <a href="options.html#'weirdinvert'">'weirdinvert'</a> 选项和
设置 <a href="term.html#'t_xs'">'t_xs'</a> 非空的相同的效果，反之亦然。

                                                        <b class="vimtag"> <a name="scroll-region">scroll-region</a> </b>
有些 termcap 不包括 "cs" (滚动区域) 的项目，尽管有些终端支持这一特性。比如，
Sun 上的 xterm。你可以使用内建的 builtin_xterm 或者自己定义 t_cs。例如: 
<code class="example">        :set t_cs=^V^[[%i%d;%dr</code>
其中 ^V 是 <code class="keystroke">CTRL-V</code>，而 ^[ 是 <code class="special">&lt;Esc&gt;</code>。

垂直滚动区域 t_CV 不是标准的 termcap 代码。Vim 在 GUI 里内部使用之。但是如果你
能找到支持这一特性的终端，也可以在终端里定义，两个参数分别是限制滚动的区域的左
边列和右边列。就像 t_cs 定义顶部行和底部行那样。定义 t_CV 会使得在垂直分割的窗
口里滚动窗口快很多。如果 t_da 或者 t_db 设置了，不要设置 t_CV (文本在滚动时不
会清除)。

不幸的是无法从 termcap 里推断光标定位应不应该使用滚动区域: 是相对于屏幕的开始
处，还是相对于滚动区域的开始处。大多数终端使用第一种方法。在光标定位相对于滚动
区域的情况下，<a href="term.html#'t_CS'">'t_CS'</a> 选项应该设置为任何非空字符串。反之，则设为空字符串。

xterm 用户 <code class="note">注意</code>: shift + 光标键一般不工作。要使用 xmodmap 命令和 Vim 里的一些
        设置才可以。

        在 xterm 里给出如下命令:
                xmodmap -e "keysym Up = Up F13"
                xmodmap -e "keysym Down = Down F16"
                xmodmap -e "keysym Left = Left F18"
                xmodmap -e "keysym Right = Right F19"

        然后在 Vim 里使用这些映射:
                :map <code class="special">&lt;t_F3&gt;</code> <code class="special">&lt;S-Up&gt;</code>
                :map! <code class="special">&lt;t_F3&gt;</code> <code class="special">&lt;S-Up&gt;</code>
                :map <code class="special">&lt;t_F6&gt;</code> <code class="special">&lt;S-Down&gt;</code>
                :map! <code class="special">&lt;t_F6&gt;</code> <code class="special">&lt;S-Down&gt;</code>
                :map <code class="special">&lt;t_F8&gt;</code> <code class="special">&lt;S-Left&gt;</code>
                :map! <code class="special">&lt;t_F8&gt;</code> <code class="special">&lt;S-Left&gt;</code>
                :map <code class="special">&lt;t_F9&gt;</code> <code class="special">&lt;S-Right&gt;</code>
                :map! <code class="special">&lt;t_F9&gt;</code> <code class="special">&lt;S-Right&gt;</code>

与其使用，比如说，<code class="special">&lt;S-Up&gt;</code>，你可以使用任何其它的命令来做你希望 shift + 光标上移
做的事情。(<code class="note">注意</code>: 为了帮助使用有左侧键的 Sun 键盘的人，不要使用 F14，因为它和撤
销键有冲突；不要用 F15，因为它执行把窗口转到前台的操作；也不要用 F17，因为它关
闭窗口。其他系统上，你也许可以用这些键。)

</section><hr class="doubleline" /><section class=inner>
<h4>3. 窗口大小                                             <b class="vimtag"> <a name="window-size">window-size</a> </b></h4>
[这是关于 Vim 使用的整个窗口，不是用 ":split" 命令创建的那种窗口。(<code class="vim">译者注</code>: Vim
里的术语或者用屏幕更合适些。)]

如果你在 Amiga 上运行 Vim，而终端名是 "amiga" 或 "builtin_amiga"，打开 amiga
专用的窗口大小调整技术。Unix 系统上，有三个方法可以得到窗口的大小:

- ioctl 调用 (TIOCGSIZE 或者 TIOCGWINSZ，视乎你的系统而定)
- 环境变量 "LINES" 和 "COLUMNS"
- termcap 项目 "li" 和 "co"

如果所有这些都不行，假设缺省大小为 24 行和 80 列。如果收到改变窗口大小的信号，
大小会重新设置。如果窗口大小不正确，你可以用 <a href="options.html#'lines'">'lines'</a> 和 <a href="options.html#'columns'">'columns'</a> 选项来设置正
确的值。

这个命令可以设置屏幕大小:

                                                <b class="vimtag"> <a name=":mod">:mod</a> </b> <b class="vimtag"> <a name=":mode">:mode</a> </b> <b class="vimtag"> <a name="E359">E359</a> </b>
:mod[e] <code class="special">[mode]</code>

如果不带参数，该命令检测屏幕大小并重画屏幕。
[mode] 过去用于 MS-DOS，现在已经不能用了。 <a href="vim9.html#Vim9">Vim9</a>  不支持此命令。

</section><hr class="doubleline" /><section class=inner>
<h4>4. 慢速和快速终端                               <b class="vimtag"> <a name="slow-fast-terminal">slow-fast-terminal</a> </b></h4>                                                <b class="vimtag"> <a name="slow-terminal">slow-terminal</a> </b>

如果你有一个快速终端，你可能愿意置位 <a href="options.html#'ruler'">'ruler'</a> 选项。光标位置将显示在状态行上。
如果你使用横向滚动 (关闭 <a href="options.html#'wrap'">'wrap'</a> 选项)，考虑把 <a href="options.html#'sidescroll'">'sidescroll'</a> 设小一点。

如果你有一个慢速终端，你也许希望复位 <a href="options.html#'showcmd'">'showcmd'</a> 选项。这样，命令字符就不会显示
在状态行上。如果终端滚动很慢，把 <a href="options.html#'scrolljump'">'scrolljump'</a> 设为 5 左右。如果光标离开屏幕
(例如，用 "j")，Vim 会一次滚动 5 行。另外一个可能性是减少 Vim 使用的行数，通过
"z<code class="special">{height}</code><code class="special">&lt;CR&gt;</code>" 命令。

如果终端的字符到达时间相距超过 1 秒，你也许希望设置 <a href="options.html#'timeout'">'timeout'</a> 和/或 <a href="options.html#'ttimeout'">'ttimeout'</a>
选项。见 "Options" 一章  <a href="options.html#options">options</a> 。

如果你的终端不支持滚动区域，但是支持插入/删除行命令，多个窗口的滚动也许会使得
行跳上跳下。复位了 <a href="options.html#'ttyfast'">'ttyfast'</a> 选项就会如此。为此，可以这样检查一下: 
<code class="example">        verbose set ttyfast?</code>
<code class="example"></code>
如果你的终端滚动很慢，但是重画却不慢，把 <a href="options.html#'ttyscroll'">'ttyscroll'</a> 设小一点，比如 3。这使得
Vim 在超过 3 行需要滚动时，重画屏幕而不是滚动。

如果你使用一个慢速的彩色终端，使用命令: 
<code class="example">        hi NonText cterm=NONE ctermfg=NONE</code>
这避免了空格在改变属性时被重复发送。大多数终端上，你反正也不会看到任何区别。

如果你在慢速的串行线上使用 Vim，你也许想要尝试在 "screen" 程序里运行 Vim。
screen 优化终端 I/O 挺不错的。

如果你在测试 termcap 选项，但是你看不到发生了什么，你也许希望设置 <a href="options.html#'writedelay'">'writedelay'</a>
选项。如果非零，每次给终端只发一个字符。这使得屏幕刷新变慢很多，从而能看清楚发
生了什么。

</section><hr class="doubleline" /><section class=inner>
<h4>5. 使用鼠标                                             <b class="vimtag"> <a name="mouse-using">mouse-using</a> </b></h4>
本节说明在终端或者终端窗口里如何使用鼠标。GUI 窗口里如何使用鼠标在  <a href="gui.html#gui-mouse">gui-mouse</a> 
里解释。关于使用鼠标滚轮进行滚动的部分见  <a href="scroll.html#scroll-mouse-wheel">scroll-mouse-wheel</a> 。

不要忘记用以下命令打开鼠标: 
<code class="example">        :set mouse=a</code>
否则 Vim 不会在所有模式下识别鼠标 (见 <a href="options.html#'mouse'">'mouse'</a>)。

目前，鼠标只有在 Unix 的 xterm 窗口、带  <a href="term.html#sysmouse">sysmouse</a>  的 *BSD 控制台、Linux 终端
(带 GPM  <a href="term.html#gpm-mouse">gpm-mouse</a> )、Windows 终端上才支持。鼠标键击可以用来定位光标，设置区域
并粘贴。

<a href="options.html#'mouse'">'mouse'</a> 选项的字符决定 Vim 在什么场合下会使用鼠标:
                n       普通模式
                v       可视模式
                i       插入模式
                c       命令行模式
                h       在帮助文件里，以上所有的模式
                a       以上所有的模式
                r       跳过  <a href="message.html#hit-enter">hit-enter</a>  提示

<a href="options.html#'mouse'">'mouse'</a> 的缺省值为空，即不使用鼠标。通常你会用: 
<code class="example">        :set mouse=a</code>
来开始使用鼠标 (这等价于设置 <a href="options.html#'mouse'">'mouse'</a> 为 "nvich")。如果你只想在若干模式下或者在
某两个任务上使用鼠标，你需要专注于那些模式对应的字母。例如: 
<code class="example">        :set mouse=nv</code>
会使得鼠标在普通模式和可视模式下工作。 
<code class="example">        :set mouse=h</code>
会使得鼠标只有在帮助文件里工作 (这样，可以用 "g<code class="special">&lt;LeftMouse&gt;</code>" 来进行标签跳转)。

鼠标能否在可视模式或者选择模式下开始选择，决定于 "selectmode" 选项包不包括
"mouse"。

                                                        <b class="vimtag"> <a name="terminal-mouse">terminal-mouse</a> </b>
在 xterm 终端里，在 <a href="options.html#'mouse'">'mouse'</a> 选项包含当前激活的模式的前提下，普通的鼠标键击归
Vim 使用，而带 shift 或者 ctrl 键的鼠标键击由 xterm 控制。如果 <a href="options.html#'mouse'">'mouse'</a> 不包括
当前激活的模式，则所有的鼠标键击由 xterm 控制。

对于自身不能通过修饰符来使用鼠标事件的终端，一个权宜之计是在 Vim 的命令模式中
不使用鼠标事件: 
<code class="example">        :set mouse=nvi</code>
然后在终端中选择文本，用 ":" 进入命令行模式，选择并复制文本到系统中，然后按
Esc。

另一个办法是临时地用 ":sh" 来运行外壳，复制文本，然后退出外壳。此时 <a href="options.html#'mouse'">'mouse'</a> 仍
应设为 "a"。
                                                        <b class="vimtag"> <a name="xterm-clipboard">xterm-clipboard</a> </b>
Motif GUI 版本上，如果在终端运行但是可以访问 X-server (设置了 DISPLAY)，那么复
制和粘贴和 GUI 上的行为相似。如果不是，那么鼠标中键会插入无名寄存器。这种情况
下，这里是如何复制和粘贴一段文本的方法:

用鼠标和可视模式复制/粘贴 (<a href="options.html#'mouse'">'mouse'</a> 选项必须设置，见上):
1. 在文本的第一个字符上按鼠标左键，移动鼠标到文本的最后一个字母，然后释放左
   键。这会启动可视模式并高亮选择区域。
2. 按 "y" 抽出可视文本到无名寄存器里。
3. 在要插入的位置上按鼠标左键。
4. 按鼠标中键。

快捷方式: 如果插入位置和可视文本同时出现在屏幕上，你可以一次做 2、3 和 4: 在要
插入的位置直接按鼠标中键。

<code class="note">注意</code>: 如果使用  <a href="starting.html#-X">-X</a>  命令行参数，Vim 不会连接到 X 服务器，所以复制/粘贴到 X 剪
贴板 (选择区) 不会工作。使用带 shift 键的鼠标键来让 xterm 完成选择。

                                                        <b class="vimtag"> <a name="xterm-command-server">xterm-command-server</a> </b>
如果 X-服务器的剪贴板可用， <a href="remote.html#x11-clientserver">x11-clientserver</a>  的命令服务器可以在命令行用
--servername 打开。

                                                        <b class="vimtag"> <a name="xterm-copy-paste">xterm-copy-paste</a> </b>
<code class="note">注意</code>: 在有些 (较老的) xterm 版本里，光标不能移动超过第 95 或 223 列。这是
xterm 的问题，不是 Vim 的。用新一点的 xterm 吧  <a href="syntax.html#color-xterm">color-xterm</a> 。另见
<a href="options.html#'ttymouse'">'ttymouse'</a>。

使用 xterm 粘贴/复制 (当前模式 <code class="emphasis">不</code> 包括在 <a href="options.html#'mouse'">'mouse'</a> 里):
1. 在文本的第一个字符上按鼠标左键，移动鼠标到文本的最后一个字母，然后释放。
2. 使用普通的 Vim 命令把光标移动到待插入的位置。
3. 按 "a" 开始插入模式。
4. 按鼠标中键。
5. 按 ESC 退出插入模式。
(对包含在 <a href="options.html#'mouse'">'mouse'</a> 里的模式，这里的操作同样可以完成，只要你在使用鼠标的时候按住
shift 键就行了。)

<code class="note">注意</code>: 如果你在粘贴的时候丢失了第 8 位 (特殊字符被翻译成其他字符)，你需要在启动
Vim 之前在外壳上执行 "stty cs8 -istrip -parenb"。

这样，在 xterm 上 shift 和 ctrl 键不能和鼠标一起使用。需要 CTRL 修饰符的鼠标命
令可以在使用鼠标前按 "g" 键模拟:
        "g<code class="special">&lt;LeftMouse&gt;</code>"  是 "<code class="special">&lt;C-LeftMouse&gt;</code>       (跳转到鼠标点击的标签上)
        "g<code class="special">&lt;RightMouse&gt;</code>" 是 "<code class="special">&lt;C-RightMouse&gt;</code>      ("<code class="keystroke">CTRL-T</code>")

                                        <b class="vimtag"> <a name="mouse-mode-table">mouse-mode-table</a> </b> <b class="vimtag"> <a name="mouse-overview">mouse-overview</a> </b>
如果 <a href="options.html#'mousemodel'">'mousemodel'</a> 是 "extend" ，鼠标按钮的功能的概述在此:

普通模式:
<code class="section">事件          移动光标     选择         改变窗口   行动 </code>
<code class="special">&lt;LeftMouse&gt;</code>     是         结束           是
<code class="special">&lt;C-LeftMouse&gt;</code>   是         结束           是       "<code class="keystroke">CTRL-]</code>" (2)
<code class="special">&lt;S-LeftMouse&gt;</code>   是        不改变          是       "*" (2)    <b class="vimtag"> <a name="%3CS-LeftMouse%3E">&lt;S-LeftMouse&gt;</a> </b>
<code class="special">&lt;LeftDrag&gt;</code>      是      开始或者扩展 (1)  否                  <b class="vimtag"> <a name="%3CLeftDrag%3E">&lt;LeftDrag&gt;</a> </b>
<code class="special">&lt;LeftRelease&gt;</code>   是      开始或者扩展 (1)  否
<code class="special">&lt;MiddleMouse&gt;</code>   是      如果没有激活      否       放置
<code class="special">&lt;MiddleMouse&gt;</code>   是       如果激活         否       抽出和放置
<code class="special">&lt;RightMouse&gt;</code>    是      开始或者扩展      是
<code class="special">&lt;A-RightMouse&gt;</code>  是      开始或者扩展列块  是                  <b class="vimtag"> <a name="%3CA-RightMouse%3E">&lt;A-RightMouse&gt;</a> </b>
<code class="special">&lt;S-RightMouse&gt;</code>  是        不改变          是       "#" (2)    <b class="vimtag"> <a name="%3CS-RightMouse%3E">&lt;S-RightMouse&gt;</a> </b>
<code class="special">&lt;C-RightMouse&gt;</code>  否        不改变          否       "<code class="keystroke">CTRL-T</code>"
<code class="special">&lt;RightDrag&gt;</code>     是         扩展           否                  <b class="vimtag"> <a name="%3CRightDrag%3E">&lt;RightDrag&gt;</a> </b>
<code class="special">&lt;RightRelease&gt;</code>  是         扩展           否                  <b class="vimtag"> <a name="%3CRightRelease%3E">&lt;RightRelease&gt;</a> </b>

插入或替换模式:
<code class="section">事件          移动光标     选择           改变窗口 行动 </code>
<code class="special">&lt;LeftMouse&gt;</code>     是      (不能激活)          是
<code class="special">&lt;C-LeftMouse&gt;</code>   是      (不能激活)          是     "<code class="keystroke">CTRL-O</code>^]" (2)
<code class="special">&lt;S-LeftMouse&gt;</code>   是      (不能激活)          是     "<code class="keystroke">CTRL-O</code>*" (2)
<code class="special">&lt;LeftDrag&gt;</code>      是     开始或者扩展 (1)     否     类似于 <code class="keystroke">CTRL-O</code> (1)
<code class="special">&lt;LeftRelease&gt;</code>   是     开始或者扩展 (1)     否     类似于 <code class="keystroke">CTRL-O</code> (1)
<code class="special">&lt;MiddleMouse&gt;</code>   否      (不能激活)          否     放置寄存器内容
<code class="special">&lt;RightMouse&gt;</code>    是     开始或者扩展         是     类似于 <code class="keystroke">CTRL-O</code>
<code class="special">&lt;A-RightMouse&gt;</code>  是     开始或者扩展列块     是
<code class="special">&lt;S-RightMouse&gt;</code>  是      (不能激活)          是     "<code class="keystroke">CTRL-O</code>#" (2)
<code class="special">&lt;C-RightMouse&gt;</code>  否      (不能激活)          否     "<code class="keystroke">CTRL-O</code> <code class="keystroke">CTRL-T</code>"

在帮助窗口里:
<code class="section">事件          移动光标     选择           改变窗口 行动 </code>
<code class="special">&lt;2-LeftMouse&gt;</code>   是     (不能激活)           否     "^]" (帮助标签跳转)

当 <a href="options.html#'mousemodel'">'mousemodel'</a> 为 "popup" 时，下面这些有所差异:

普通模式:
<code class="section">事件          移动光标     选择           改变窗口 行动 </code>
<code class="special">&lt;S-LeftMouse&gt;</code>   是      开始或者扩展 (1)    否
<code class="special">&lt;A-LeftMouse&gt;</code>   是      开始或者扩展列块    否                <b class="vimtag"> <a name="%3CA-LeftMouse%3E">&lt;A-LeftMouse&gt;</a> </b>
<code class="special">&lt;RightMouse&gt;</code>    否       弹出菜单           否

插入或替换模式:
<code class="section">事件          移动光标     选择           改变窗口 行动 </code>
<code class="special">&lt;S-LeftMouse&gt;</code>   是      开始或者扩展 (1)    否     类似于 <code class="keystroke">CTRL-O</code> (1)
<code class="special">&lt;A-LeftMouse&gt;</code>   是      开始或者扩展列块    否
<code class="special">&lt;RightMouse&gt;</code>    否       弹出菜单           否

(1) 只有当鼠标在按键后发生移动
(2) 只有当点击发生在同一缓冲区时

点击鼠标左键改变光标的位置。如果点击发生在另一个窗口，那么那个窗口成为活动窗
口。在编辑命令行时，光标只能定位在命令行上。在插入模式下，Vim 仍然保持在插入模
式。如果设置了 <a href="options.html#'scrolloff'">'scrolloff'</a>，而光标定位在窗口边界 <a href="options.html#'scrolloff'">'scrolloff'</a> 行范围内，则文本
被滚动。

在第一个字符上按鼠标左键，移动鼠标到最后一个字符，然后释放，可以进行选择。直到
你释放鼠标键，你不一定总能看到选择的区域。只有一些版本能够 (GUI、WIN32) 使得拖
动立即显示。<code class="note">注意</code> 如果 <a href="options.html#'scrolloff'">'scrolloff'</a> 非零，你可以在窗口的首/末行移动鼠标至少一个
字符位置使文本滚动。

在普通、可视和选择模式下，单击鼠标右键使得可视区域被扩展。如果 <a href="options.html#'mousemodel'">'mousemodel'</a> 为
"popup"，必须使用按住 shift 键的鼠标左键。如果在编辑另外一个缓冲区时点击一个窗
口，可视和选择模式被终止。

在普通、可视和选择模式下，按下 Alt 键同时单击鼠标右键，可使选择区域成为面向列
块。当 <a href="options.html#'mousemodel'">'mousemodel'</a> 被设置为 "popup"，鼠标左键必须和 Alt 键一起使用。<code class="note">注意</code>在某
些系统中失效，那些系统中的窗口管理器在按下 Alt 键时会吃掉鼠标事件 (可能会移动
窗口)。

                                                        <b class="vimtag"> <a name="double-click">double-click</a> </b>
双击、三击和四击在 GUI 激活时、Win32 以及 xterm (如果有 gettimeofday() 函数)
上得到支持。对于文本选择，附加的点击会扩展选择区:
<code class="section">        点击            选择 </code>
        两次            单词或者 % 匹配         <b class="vimtag"> <a name="%3C2-LeftMouse%3E">&lt;2-LeftMouse&gt;</a> </b>
        三次            行                      <b class="vimtag"> <a name="%3C3-LeftMouse%3E">&lt;3-LeftMouse&gt;</a> </b>
        四次            矩形区域                <b class="vimtag"> <a name="%3C4-LeftMouse%3E">&lt;4-LeftMouse&gt;</a> </b>
特例: 在帮助窗口上，双击跳到点击的单词对应的帮助。
双击单词选择该单词。<a href="options.html#'iskeyword'">'iskeyword'</a> 用来指定单词可以包括哪些字符。双击一个有匹配的
字符选择直到该匹配的区域 (类似于 "v%")。如果匹配是 #if/#else/#endif 块，选择变
为面向行。
MS-Windows 和 xterm 上，双击相隔的时间可以通过 <a href="options.html#'mousetime'">'mousetime'</a> 选项设置。其他系统
上，该值只能在 Vim 之外定义。
一个使用双击跳转到光标所在的标签的例子: 
<code class="example">        :map &lt;2-LeftMouse&gt; :exe "tag " .. expand("&lt;cword&gt;")&lt;CR&gt;</code>
<code class="example"></code>
使用双击拖动鼠标 (按下按钮、抬起按钮、按下按钮、然后拖动) 会导致完整的多个单词
被选择，直到按钮被释放为止。这时选择重新以字符为单位。

鼠标滚动可见  <a href="scroll.html#scroll-mouse-wheel">scroll-mouse-wheel</a> 。

                                                        <b class="vimtag"> <a name="gpm-mouse">gpm-mouse</a> </b>
GPM 鼠标只有在编译时打开  <a href="various.html#+mouse_gpm">+mouse_gpm</a>  特性才有效。GPM 鼠标驱动 (Linux 终端) 不
支持四击。

插入模式下，但选择开始时，Vim 暂时回到普通模式。在可视或者选择模式结束时，又回
到插入模式。这类似于在插入模式下使用 <code class="keystroke">CTRL-O</code> 的情形。选择模式在 <a href="options.html#'selectmode'">'selectmode'</a> 选
项包含 "mouse" 时被使用。
                                                        <b class="vimtag"> <a name="sysmouse">sysmouse</a> </b>
只有编译时加入  <a href="various.html#+mouse_sysmouse">+mouse_sysmouse</a>  特性才会支持 sysmouse。sysmouse 驱动 (*BSD 控
制台) 不支持键盘修饰符。

                                                        <b class="vimtag"> <a name="drag-status-line">drag-status-line</a> </b>
如果有多个窗口一起工作，窗口的大小可以用通过鼠标拖动状态行来改变。把鼠标点在状
态行上，按左键，移动鼠标把状态行带到新的位置，再释放左键。只是用鼠标点击状态行
而不移动鼠标使得那个窗口成为当前窗口。如果选择了一个窗口会改变状态行的位置或大
小，状态行的拖动看起来很奇怪，但还是会工作的 (试试吧)。

                                        <b class="vimtag"> <a name="%3CMiddleRelease%3E">&lt;MiddleRelease&gt;</a> </b> <b class="vimtag"> <a name="%3CMiddleDrag%3E">&lt;MiddleDrag&gt;</a> </b>
鼠标点击可以映射。鼠标点击的代码是:
<code class="section">     代码           鼠标按钮    一般的行动      </code>
 <code class="special">&lt;LeftMouse&gt;</code>     按住左键       设置光标位置
 <code class="special">&lt;LeftDrag&gt;</code>      按住并移动左键 扩展选择区
 <code class="special">&lt;LeftRelease&gt;</code>   释放左键       结束选择区
 <code class="special">&lt;MiddleMouse&gt;</code>   按住中键       在光标所在的位置上粘贴
 <code class="special">&lt;MiddleDrag&gt;</code>    按住并移动中键 -
 <code class="special">&lt;MiddleRelease&gt;</code> 释放中键       -
 <code class="special">&lt;RightMouse&gt;</code>    按住右键       扩展选择区
 <code class="special">&lt;RightDrag&gt;</code>     按住并移动右键 扩展选择区
 <code class="special">&lt;RightRelease&gt;</code>  释放右键       结束选择区
 <code class="special">&lt;X1Mouse&gt;</code>       按住 X1 键         -                   <b class="vimtag"> <a name="X1Mouse">X1Mouse</a> </b>
 <code class="special">&lt;X1Drag&gt;</code>        按住并移动 X1      -                   <b class="vimtag"> <a name="X1Drag">X1Drag</a> </b>
 <code class="special">&lt;X1Release&gt;</code>     释放 X1 键         -                   <b class="vimtag"> <a name="X1Release">X1Release</a> </b>
 <code class="special">&lt;X2Mouse&gt;</code>       按住 X2 键         -                   <b class="vimtag"> <a name="X2Mouse">X2Mouse</a> </b>
 <code class="special">&lt;X2Drag&gt;</code>        按住并移动 X2      -                   <b class="vimtag"> <a name="X2Drag">X2Drag</a> </b>
 <code class="special">&lt;X2Release&gt;</code>     释放 X2 键         -                   <b class="vimtag"> <a name="X2Release">X2Release</a> </b>

X1 和 X2 按钮指一些鼠标上的附加按钮。'Microsoft Explorer' 鼠标在右拇指位置有这
些键。目前 X1 和 X2 只能用于 Win32 和 X11 环境。

示例: 
<code class="example">        :noremap &lt;MiddleMouse&gt; &lt;LeftMouse&gt;&lt;MiddleMouse&gt;</code>
在鼠标中键点击的位置粘贴 (不然，粘贴在光标所在的位置进行)。

<code class="example">        :noremap &lt;LeftRelease&gt; &lt;LeftRelease&gt;y</code>
在可视模式下立即抽出选择区。

<code class="note">注意</code>使用了 ":noremap" 而不是 "map"，以免发生递归映射。

<code class="example">        :map &lt;X1Mouse&gt; &lt;C-O&gt;</code>
<code class="example">        :map &lt;X2Mouse&gt; &lt;C-I&gt;</code>
把 X1 和 X2 键定义为跳转表的前进和后退，见  <a href="motion.html#CTRL-O">CTRL-O</a>  和  <a href="motion.html#CTRL-I">CTRL-I</a> 。

                                                <b class="vimtag"> <a name="mouse-swap-buttons">mouse-swap-buttons</a> </b>
要交换鼠标左键和右键的含义: 
<code class="example">        :noremap        &lt;LeftMouse&gt;     &lt;RightMouse&gt;</code>
<code class="example">        :noremap        &lt;LeftDrag&gt;      &lt;RightDrag&gt;</code>
<code class="example">        :noremap        &lt;LeftRelease&gt;   &lt;RightRelease&gt;</code>
<code class="example">        :noremap        &lt;RightMouse&gt;    &lt;LeftMouse&gt;</code>
<code class="example">        :noremap        &lt;RightDrag&gt;     &lt;LeftDrag&gt;</code>
<code class="example">        :noremap        &lt;RightRelease&gt;  &lt;LeftRelease&gt;</code>
<code class="example">        :noremap        g&lt;LeftMouse&gt;    &lt;C-RightMouse&gt;</code>
<code class="example">        :noremap        g&lt;RightMouse&gt;   &lt;C-LeftMouse&gt;</code>
<code class="example">        :noremap!       &lt;LeftMouse&gt;     &lt;RightMouse&gt;</code>
<code class="example">        :noremap!       &lt;LeftDrag&gt;      &lt;RightDrag&gt;</code>
<code class="example">        :noremap!       &lt;LeftRelease&gt;   &lt;RightRelease&gt;</code>
<code class="example">        :noremap!       &lt;RightMouse&gt;    &lt;LeftMouse&gt;</code>
<code class="example">        :noremap!       &lt;RightDrag&gt;     &lt;LeftDrag&gt;</code>
<code class="example">        :noremap!       &lt;RightRelease&gt;  &lt;LeftRelease&gt;</code>

 vim:tw=78:ts=8:noet:ft=help:norl:
</section>
</article>
<footer>
Generated by vim2html
</footer>
</body>
</html>
